首页 文章

知道为什么我在我的c程序中得到这两个错误?

提问于
浏览
2

我正在编写一个创建复杂数字类的程序,当我尝试测试我的重载运算符时,我遇到了这两个错误>> . 以下是错误:

错误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 回答

  • 0

    处理 main 时,编译器发现表达式 cin >> num; 的最佳重载是 std::basic_istream<...>& operator>>( std::basic_istream<...>&, const Complex& ) ,请注意第二个参数中的 const .

    这可能表示您已将运算符声明为:

    std::istream& operator>>( std::istream&, const Complex & );
    

    但随后实施:

    std::istream& operator>>( std::istream&, Complex & );
    
  • 4

    我猜你已经实现了 >> 运算符作为你的类的成员,因为它真的需要是一个 friend 才能以你想要的方式使用它 .

    看看这个问题:Should operator<< be implemented as a friend or as a member function?

    在Scott Meyers中还有一个关于这些运算符的部分:有效的C编程,但是我没有这本书可以提供参考 .

相关问题