1. 友元是外部函数,类中声明此函数为友元的时候,在类定义之前要对该函数进行声明,因为类之前没有定义此函数,按C++的语法自然也就无法识别。而且声明此函数时又用到类cloth,所以还得声明cloth,如下
class cloth;
string operator < (cloth &c1,cloth &c2 );
class cloth
{
...........
};
2.c_str()函数是将C++的字符串类型转换成char *类型。
因为strcmp函数的两个参数都是char*类型,所以必须转换
3.至于第3个问题,不同的开发环境自带的文件(.h,.dll等)也不相同,在dev C++中按编译VC程序当然会出错
1.友元那个问题看明白,请说的详细一点;
2.std::string 是 C++ 中的标准字符串, char * 是 C 中的标准字符串, 它们是两个不同的东西,strcmp 是 C 标准函数,所以使用的是
C 的字符串,它当然不认 string 是个什么东东了,所以要进行转换,这个转换就是由 string::c_str() 来实现的;
3.详细说明一个在 dev-c++ 中的问题.
微软的早期版本的 VC++ 6.0 中存在bug, 不能在声明重载运算符之前写"using namespace std;"
我的解决办法,
1.去掉上面的using namespace std;
2.将程序中出现的所有string,改成std::string,将cout改成std::cout,endl改成std::endl
或许有更好的解决方法,比如在郑莉的《C++语言程序设计》提到要下载Visual Studio 6.0 SP5 可以解决,不过我发现我的好像就是SP5,不过我装的是盗版的,因此具体什么原因我也不知道。
其他问题我也上面的仁兄已经回答了,我就不说了
希望对你有帮助