百度空间 | 百度首页 
 
查看文章
 
error C2593: 'operator <<' is ambiguous  error C2679: binary '>>'
2008-06-18 19:39

error C2593: 'operator <<' is ambiguous
error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'char *' (or there is no acceptable conversion)
Error executing cl.exe.

我的问题不是头文件的事,不是那种简单的void main式的,是在 CArchive的时候出的问题在MSDN中的解释是

使用 CArchive对象序列化浮点变量可导致此错误。编译器将 << 运算符标识为不明确的。CArchive可序列化的唯一的基元 C++ 类型是固定大小的类型 BYTEWORDDWORDLONG。所有的 integer 类型必须强制转换为这些类型之一才能进行序列化。必须使用 CArchive::write() 成员函数将浮点类型存档。


struct Student
{
int age;
char* name;
public:
friend CArchive& operator <<(CArchive &ar,Student &ob)
{
   ar<<ob.age;
   ar<<ob.name;
   return ar;
}
friend CArchive& operator >>(CArchive &ar,Student &ob)
{
   ar>>ob.age;
   ar>>ob.name;
   return ar;
}

};
是指针的问题,也就是类型的问题。我把char * name改为了

struct Student
{
int age;
char name[1024];

public:
friend CArchive& operator <<(CArchive &ar,Student &ob)
{
   ar<<ob.age;
   for(int i=0;i<1024;i++)
   {
    ar<<ob.name[i];
   }
   return ar;
}
friend CArchive& operator >>(CArchive &ar,Student &ob)
{
   ar>>ob.age;
   for(int i=0;i<1024;i++)
   {
    ar>>ob.name[i];
   }
   return ar;
}

};
编译通过。


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu