使用有效的C++; 我将旧C++代码移植到一个有效的C++安全版本。我读到关于这面旗帜的问题,但我没有选择做还是不做,这是必须的。在使用模板时,我遇到了一个重载equals运算符的问题
我试图将功能从头文件移动到实际的cpp,但没有任何效果。删除模板是可行的,但由于需要模板,它只是告诉我问题出在哪里使用有效的C++; 我将旧C++代码移植到一个有效的C++安全版本。我读到关于这面旗帜的问题,但我没有选择做还是不做,这是必须的。在使用模板时,我遇到了一个重载equals运算符的问题,c++,templates,operator-overloading,weffc++,C++,Templates,Operator Overloading,Weffc++,我试图将功能从头文件移动到实际的cpp,但没有任何效果。删除模板是可行的,但由于需要模板,它只是告诉我问题出在哪里 模板 MyClass&operator=(常量boost::tuple&\u v) { //一些操作 归还*这个; } 编译此代码会引发以下错误: 'operator=' should return a reference to *this 指向准确的一行返回*this MyClass不继承任何其他类。这是一个effc++错误还是我遗漏了什么?请您浏览一下“//一些操作”好吗?
模板
MyClass&operator=(常量boost::tuple&\u v)
{
//一些操作
归还*这个;
}
编译此代码会引发以下错误:
'operator=' should return a reference to *this
指向准确的一行返回*this代码>
MyClass不继承任何其他类。这是一个effc++错误还是我遗漏了什么?请您浏览一下“//一些操作”好吗?。顺便说一句,这是赋值运算符,而不是“等于运算符”,对我来说绝对是个bug。让我们在a的帮助下确认这一点。尝试从错误选项中消除错误警告是一个愚蠢的策略。MyClass
的操作符=()
必须是MyClass
的非静态成员。您不能在MyClass
的类定义之外声明这样的东西。如果您不遵守该规则,编译器往往会给出隐藏的错误消息-因为此
不存在于非静态成员之外,所以它可能会对此进行投诉。然后您需要提供一个-一个小的代码示例,其他人可以将其提供给编译器并复制您的症状。你提供的信息不足以让任何人帮助你。