C++ C++;运算符重载错误
我在读取时遇到一个错误,没有将函数样式从“int”转换为“TrashCan”的匹配转换 以下是标题中的声明:C++ C++;运算符重载错误,c++,class,operator-overloading,C++,Class,Operator Overloading,我在读取时遇到一个错误,没有将函数样式从“int”转换为“TrashCan”的匹配转换 以下是标题中的声明: class TrashCan { friend TrashCan operator +( TrashCan& left, TrashCan& right); public: TrashCan(); int size=0; int item=0; void setSize(int); void addItem(); 以
class TrashCan
{
friend TrashCan operator +( TrashCan& left,
TrashCan& right);
public:
TrashCan();
int size=0;
int item=0;
void setSize(int);
void addItem();
以下是我的实现:
TrashCan operator +(const TrashCan& left,
const TrashCan& right) {
TrashCan t= TrashCan( left.size + right.size );
return( t );
}
下面是底部带有运算符的主视图:
int main( ) {
cout << "Welcome to My TrashCan Program!" << endl;
TrashCan myCan;
TrashCan yourCan;
yourCan.setSize( 12 );
myCan.setSize( 12 );
yourCan.addItem( );
yourCan.addItem( );
myCan.addItem( );
myCan.printCan();
yourCan.printCan();
//TrashCan combined = yourCan + myCan;
int main(){
无法编辑
您可以这样声明构造函数:TrashCan();
但您可以这样称呼它:TrashCan t=TrashCan(left.size+right.size);
您需要有第二个构造函数,如TrashCan(intnsize):size(nsize){}
godel9已经在注释中给出了答案,但下面是一个工作代码示例:
#包括
垃圾桶{
//您的声明与您的定义不匹配
//需要把const放在这里
朋友垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右);
公众:
垃圾桶(int nsize):大小(nsize){}
~TrashCan(){}
整数大小;
};
垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右)
{
垃圾桶t=垃圾桶(left.size+right.size);
返回(t);
}
int main()
{
垃圾桶tc1(10);
垃圾桶tc2(20);
std::cout编辑
您可以这样声明构造函数:TrashCan();
但您可以这样称呼它:TrashCan t=TrashCan(left.size+right.size);
您需要有第二个构造函数,如TrashCan(intnsize):size(nsize){}
godel9已经在注释中给出了答案,但下面是一个工作代码示例:
#包括
垃圾桶{
//您的声明与您的定义不匹配
//需要把const放在这里
朋友垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右);
公众:
垃圾桶(int nsize):大小(nsize){}
~TrashCan(){}
整数大小;
};
垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右)
{
垃圾桶t=垃圾桶(left.size+right.size);
返回(t);
}
int main()
{
垃圾桶tc1(10);
垃圾桶tc2(20);
std::cout编辑
您可以这样声明构造函数:TrashCan();
但您可以这样称呼它:TrashCan t=TrashCan(left.size+right.size);
您需要有第二个构造函数,如TrashCan(intnsize):size(nsize){}
godel9已经在注释中给出了答案,但下面是一个工作代码示例:
#包括
垃圾桶{
//您的声明与您的定义不匹配
//需要把const放在这里
朋友垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右);
公众:
垃圾桶(int nsize):大小(nsize){}
~TrashCan(){}
整数大小;
};
垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右)
{
垃圾桶t=垃圾桶(left.size+right.size);
返回(t);
}
int main()
{
垃圾桶tc1(10);
垃圾桶tc2(20);
std::cout编辑
您可以这样声明构造函数:TrashCan();
但您可以这样称呼它:TrashCan t=TrashCan(left.size+right.size);
您需要有第二个构造函数,如TrashCan(intnsize):size(nsize){}
godel9已经在注释中给出了答案,但下面是一个工作代码示例:
#包括
垃圾桶{
//您的声明与您的定义不匹配
//需要把const放在这里
朋友垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右);
公众:
垃圾桶(int nsize):大小(nsize){}
~TrashCan(){}
整数大小;
};
垃圾桶操作员+(常量垃圾桶和左侧,
康斯特垃圾桶(右)
{
垃圾桶t=垃圾桶(left.size+right.size);
返回(t);
}
int main()
{
垃圾桶tc1(10);
垃圾桶tc2(20);
std::您的定义中是否包含const
,而不是您的声明。您是否可以包含您尝试使用operator+
对两个TrashCan
对象进行操作的代码?这可能是错误的根源。此外,如果您可以添加TrashCan
类的构造函数,这将是一个很大的帮助。或者,如果垃圾桶
的整个声明不太长的话,也可以这样说。@NicholasM我在编辑中包含了更多的代码,因为这是一个非常简单的程序。您的定义中包含了常量
,但您的声明中没有。您可以在尝试使用运算符对两个垃圾桶
对象进行操作时包含这些代码吗+代码>?这可能是错误的根源。此外,如果您可以添加TrashCan
类所具有的构造函数,这将是一个很大的帮助。或者说,如果TrashCan
的整个声明不太长的话。@NicholasM我在编辑中包含了更多的代码,因为它是一个非常简单的程序。您的def中有const
初始化,但不是您的声明。您是否可以包含使用operator+
对两个TrashCan
对象进行操作的代码?这可能是错误的根源。此外,如果您可以添加TrashCan
类所具有的构造函数,这将是一个很大的帮助。或者实际上,Tra的整个声明shCan
,如果不太长的话。@NicholasM我在编辑中包含了更多的代码,因为这是一个非常简单的程序。您的定义中包含了常量,但声明中没有。您是否可以包含尝试使用运算符+
对两个垃圾桶
对象进行操作的代码?这可能是错误的根源。此外,如果您可以添加TrashCan
类所具有的构造函数,这将是一个很大的帮助