C++ 使用重载运算符'&燃气轮机&燃气轮机';不明确(操作数类型为';istream';(又称';基本istream<;char>;';)和';MyIncremex';)
这是代码,我似乎没有发现它有什么问题;我需要重载>运算符,但出现以下错误: 重载运算符“>>”的使用不明确(操作数类型为“istream”(也称为“basic_istream”)和“MyIncremex”) 我看不出它到底有什么模棱两可的地方:C++ 使用重载运算符'&燃气轮机&燃气轮机';不明确(操作数类型为';istream';(又称';基本istream<;char>;';)和';MyIncremex';),c++,operator-overloading,ambiguous,C++,Operator Overloading,Ambiguous,这是代码,我似乎没有发现它有什么问题;我需要重载>运算符,但出现以下错误: 重载运算符“>>”的使用不明确(操作数类型为“istream”(也称为“basic_istream”)和“MyIncremex”) 我看不出它到底有什么模棱两可的地方: #include<iostream> using namespace std; class MyIncreEx; istream& operator>>(istream& is, MyIncreEx&
#include<iostream>
using namespace std;
class MyIncreEx;
istream& operator>>(istream& is, MyIncreEx& s);
ostream& operator<<(ostream &os, MyIncreEx& s);
MyIncreEx operator++(MyIncreEx& d, int dummy);
MyIncreEx operator++(MyIncreEx& d);
class MyIncreEx
{
friend istream& operator>>(istream& is, MyIncreEx s);
friend ostream& operator<<(ostream& os, MyIncreEx s);
friend MyIncreEx operator++(MyIncreEx& d, int dummy); //post-fix ex: x++;
friend MyIncreEx operator++(MyIncreEx& d); //pre-fix ex: ++x;
public:
MyIncreEx(){num1=0; num2=0; num3=0;};
int num1;
int num2;
int num3;
};
//------------------------------------------------
istream& operator>>(istream& is, MyIncreEx& s)
{
is >> s.num1;
is >> s.num2;
is >> s.num3;
return is;
};
//------------------------------------------------
ostream& operator<<(ostream &os, MyIncreEx& s)
{
os << "(" << s.num1 <<"," <<s.num2 << "," << s.num3 <<")"<< endl;
return os;
};
//------------------------------------------------
MyIncreEx operator++(MyIncreEx& d) //pre-fix ex: ++x;
{
d.num1=d.num1+1;
d.num2=d.num2+1;
d.num3=d.num3+1;
return d;
};
//------------------------------------------------
MyIncreEx operator++(MyIncreEx& d, int dummy) //post-fix ex: x++;
{
d.num1=d.num1+1;
d.num2=d.num2+1;
d.num3=d.num3+1;
return d;
};
//------------------------------------------------
int main()
{
MyIncreEx obj;
cout << "please enter three numbers: ";
cin >> obj;
cout << "The original value are: ";
cout << obj;
cout << endl;
obj++;
cout << "The new values after obj++ are: ";
cout << obj;
cout << endl;
++obj;
cout << "The new values after ++obj are: ";
cout << obj;
cout << endl;
}
//------------------------------------------------
#包括
使用名称空间std;
MyIncremex类;
istream&operator>>(istream&is、MyIncremex&s);
ostream&operator(istream&is,MyIncremex s);
friend ostream&operator(istream&is、MyIncremex&s)
{
is>>s.num1;
is>>s.num2;
is>>s.num3;
回报是;
};
//------------------------------------------------
ostream&operator您声明了两种不同版本的输出运算符:
istream& operator>>(istream& is, MyIncreEx& s);
ostream& operator<<(ostream &os, MyIncreEx& s);
class MyIncreEx
{
friend istream& operator>>(istream& is, MyIncreEx s);
friend ostream& operator<<(ostream& os, MyIncreEx s);
...
};
(假设您还将输出运算符修复为使用myincremex const&
而不是myincremex&
)。您声明了两个不同版本的输出运算符:
istream& operator>>(istream& is, MyIncreEx& s);
ostream& operator<<(ostream &os, MyIncreEx& s);
class MyIncreEx
{
friend istream& operator>>(istream& is, MyIncreEx s);
friend ostream& operator<<(ostream& os, MyIncreEx s);
...
};
(假设您还修复了输出操作符以使用myincremex const&
而不是myincremex&
)。可能是因为类中的版本上没有&
?可能是因为类中的版本上没有&
?