取り組んでいる課題に問題があります。独自の名前空間内で定義される複素数クラスを作成しています。istream と ostream のオーバーロードを除いて、すべてが機能しています。私のコードの一部を投稿させてください:
namespace maths {
class complex_number{
public:
// lots of functions and two variables
friend std::istream& operator >>(std::istream &in, maths::complex_number &input);
}
}
std::istream& operator >>(std::istream &in, maths::complex_number &input)
{
std::cout << "Please enter the real part of the number > ";
in >> input.a;
std::cout << "Please enter the imaginary part of the number > ";
in >> input.b;
return in;
}
int main(int argc, char **argv)
{
maths::complex_number b;
std::cin >> b;
return 0;
}
私が得ているエラーは次のとおりです。
com.cpp: In function ‘int main(int, char**)’:
com.cpp:159:16: error: ambiguous overload for ‘operator>>’ in ‘std::cin >> b’
com.cpp:159:16: note: candidates are:
com.cpp:131:15: note: std::istream& operator>>(std::istream&, maths::complex_number&)
com.cpp:37:26: note: std::istream& maths::operator>>(std::istream&, maths::complex_number&)
ここでフォーラムを熟読し、名前の非表示に関する回答に出くわしましたが、コードで機能させることができないようです。どんな助けでも大歓迎です!