我正在编写一个创建复杂数字类的程序,当我尝试测试我的重载运算符时,我遇到了这两个错误>> . 以下是错误:
错误LNK2028:未解析的令牌(0A0002BD)“class std :: basic_istream>&__ cdecl operator >>(class std :: basic_istream>&,class complex const&)”(?? 5 @ $$ FYAAAV?$ basic_istream @ DU? $ char_traits @ D @ std @@@ std @@ AAV01 @ ABVComplex @@@ Z)在函数“int __cdecl main(void)”(?main @@ $$ HYAHXZ)中引用错误LNK2019:未解析的外部符号“class std: :basic_istream>&__cdecl operator >>(class std :: basic_istream>&,class complex const&)“(?? 5 @ $$ FYAAAV?$ basic_istream @ DU?$ char_traits @ D @ std @@@ std @@ AAV01 @ABVComplex @@@ Z)在函数“int __cdecl main(void)”中引用(?main @@ $$ HYAHXZ)
这是我的重载功能:
istream& operator >> (istream& in, Complex& a){
double real, imaginary;
in >> real >> imaginary;
a.setReal(real);
a.setImaginary(imaginary);
return in;
}
它也说它来自我的mainComplex.obj,mainComplex是一个cpp文件,它有我用来测试程序的主要功能 .
int main(){
Complex num;
cout << "Enter Complex number: ";
cin >> num;
return 0;
}
2 回答
处理
main
时,编译器发现表达式cin >> num;
的最佳重载是std::basic_istream<...>& operator>>( std::basic_istream<...>&, const Complex& )
,请注意第二个参数中的const
.这可能表示您已将运算符声明为:
但随后实施:
我猜你已经实现了
>>
运算符作为你的类的成员,因为它真的需要是一个friend
才能以你想要的方式使用它 .看看这个问题:Should operator<< be implemented as a friend or as a member function?
在Scott Meyers中还有一个关于这些运算符的部分:有效的C编程,但是我没有这本书可以提供参考 .