请原谅我的 C++ 非常生疏。但我正在尝试使用一些旧代码并在 Visual C++ 2008 下重新编译它。它最初是为 Visual C++ 6.0 编写的
我得到的错误是这样的:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
好的看起来很简单。但后来我看看有问题的代码行:
operator=(int i) {SetAsInt(i);};
而且似乎声明了类型。那我错过了什么?
跟进:
我采纳了 Micheals 的建议并添加了函数(类)的返回类型,并在每个函数的末尾添加了return this;。然后我遇到了这个:
operator=(const CString& str);
没有定义函数体……这到底是什么意思?
最佳答案
您需要让 operator=()
方法返回一些东西(如果诊断不是错误,它会假定为 int,因为错误消息有点令人困惑)。
通常它是对运算符正在处理的对象的引用,因此赋值可以像在普通赋值表达式中一样被链接起来。像这样的东西:
// where T is the class for this operator= implementation
T& operator=( int i) {
// ...
return *this;
}
关于c++ - 如何将此 VC++ 6 代码转换为 VC++ 2008?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/740435/