c++ - 如何将此 VC++ 6 代码转换为 VC++ 2008?

标签 c++ visual-studio visual-studio-2008 visual-c++

请原谅我的 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/

相关文章:

c++ - 无法通过命令行禁用 OpenCV/MSVC C4265(无虚拟析构函数)错误

c++ - 加载队列而不是列表

c++ - const限定转换

c++ - 添加多个 Visual Studio 属性表 (.props) 的 %PATH%

.net - 在同一解决方案/项目中使用 Visual Studio 针对 32 位和 64 位

visual-studio - Visual Studio 2008“随机”挂起测试运行

c++ - 如何使用指针合法访问对齐错误的对象?

visual-studio - EXE 在 Visual Studio 安装项目输出中执行什么操作

html - " "是 " "的替代品吗?

c# - 使构建前和构建后的事件脚本漂亮吗?