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++ 类型是固定大小的类型 BYTE、WORD、DWORD 和 LONG。所有的 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;
}
};
编译通过。