C++ 如何修复重载操作数+;?
我有过载Operator+的问题 这是我的密码:C++ 如何修复重载操作数+;?,c++,class,operator-overloading,C++,Class,Operator Overloading,我有过载Operator+的问题 这是我的密码: class Odcinek : public Figura { public: Odcinek(int ile,string imie,char znak): Figura(ile,imie,znak){} friend Odcinek& operator+(int liczba); virtual void wypisz() const; }; Odcinek& operator+(int liczba
class Odcinek : public Figura
{
public:
Odcinek(int ile,string imie,char znak): Figura(ile,imie,znak){}
friend Odcinek& operator+(int liczba);
virtual void wypisz() const;
};
Odcinek& operator+(int liczba);
{
Odcinek Od;
Od.ile = Od.ile+liczba;
Od.imie = imie;
Od.znak = znak;
return Od;
}
我想让它起作用:
Odcinek F3(5,"Odcinek drugi",'*');
F3+3;
||==构建:图中的调试(编译器:GNU GCC编译器)===|
include\Figura.h | 29 | error:'Odcinek&operator+(int)'必须具有类或枚举类型的参数|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp |在函数“int main()”中:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |错误:与“运算符+”不匹配(操作数类型为“Odcinek”和“int”)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl\u iterator.h | 341 |注:候选:模板std::reverse\u iterator std::operator+(typename std::reverse\u iterator::difference\u type,const std::reverse\u iterator&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_iterator.h | 341 |注意:模板参数推导/替换失败:|
include\Figura.h | 29 | error:'Odcinek&operator+(int)'必须具有类或枚举类型的参数|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\src\Figura.cpp | 67 |错误:“Odcinek&operator+(int)”必须具有类或枚举类型的参数|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\src\Figura.cpp | 68 |错误:在“{”标记之前应为非限定id|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:类型“const std::reverse_iterator”和“int”不匹配|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl\u iterator.h | 1200 |注:候选:模板std::move\u iterator std::operator+(typename std::move\u iterator::difference\u type,const std::move\u iterator&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl|u迭代器.h | 1200 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:类型“const std::move_iterator”和“int”不匹配|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4929 |注:候选:模板标准::_cxx11::basic_string标准::operator+(常量标准:_uCXX11::basic_string&,常量标准::_uCXX11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4929 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“const std::uu cxx11::basic|string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic\u string.tcc | 1147 |注:候选:模板std::uuucx11::basic\u string std::operator+(常量图表*,常量std:uuuucx11::basic\u string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc | 1147 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注:类型“const | u CharT*”和“Odcinek”不匹配|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic\u string.tcc | 1163 |注:候选:模板std::uucx11::basic\u string std::operator+(CharT,const std:uuuucx11::basic\u string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc | 1163 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:不匹配的类型“const std::uuCXX11::basic_string”和“int”|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4966 |注:候选:模板标准::_cxx11::basic_string标准::运算符+(常量标准:_cxx11::basic_string&,常量图表*)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4966 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“const std::uu cxx11::basic|string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4982 |注:候选:模板std::u cx11::basic_string std::operator+(常量std:u cx11::basic_string&,CharT)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4982 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“const std::uu cxx11::basic|string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic\u string.h | 4994 |注:候选:模板std::u cx11::basic\u string std::operator+(std:u cx11::basic\u string&,const std:u cx11::basic\u string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 4994 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“std::uu cxx11::basic_string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 5000 |注:候选:模板std::u cx11::basic_string std::operator+(常量std:u cx11::basic_string&,std:u cx11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 5000 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“const std::uu cxx11::basic|string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic\u string.h | 5006 |注:候选:模板std::(uu cx11::basic(uu string std::operator+)(std:(uu cx11::basic)uu string&,std:(uu cx11::basic)uu string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 5006 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe~kolokwium\Figura\main.cpp | 15 |注意:“Odcinek”不是从“std::uu cxx11::basic_string”派生而来的|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic\u string.h | 5018 |注:候选:模板std::uucx11::basic\u string std::operator+(const\u CharT*,std:uuuucx11::basic\u string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h | 5018 |注意:模板参数推导/替换失败:|
C:\Users\mkkar\Desktop\Programowanie obiektowe
||=== Build: Debug in Figura (compiler: GNU GCC Compiler) ===|
include\Figura.h|29|error: 'Odcinek& operator+(int)' must have an argument of class or enumerated type|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp||In function 'int main()':|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|error: no match for 'operator+' (operand types are 'Odcinek' and 'int')|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_iterator.h|341|note: candidate: template std::reverse_iterator std::operator+(typename std::reverse_iterator::difference_type, const std::reverse_iterator&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_iterator.h|341|note: template argument deduction/substitution failed:|
include\Figura.h|29|error: 'Odcinek& operator+(int)' must have an argument of class or enumerated type|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\src\Figura.cpp|67|error: 'Odcinek& operator+(int)' must have an argument of class or enumerated type|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\src\Figura.cpp|68|error: expected unqualified-id before '{' token|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'const std::reverse_iterator' and 'int'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_iterator.h|1200|note: candidate: template std::move_iterator std::operator+(typename std::move_iterator::difference_type, const std::move_iterator&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\stl_iterator.h|1200|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'const std::move_iterator' and 'int'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4929|note: candidate: template std::__cxx11::basic_string std::operator+(const std::__cxx11::basic_string&, const std::__cxx11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4929|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'const std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc|1147|note: candidate: template std::__cxx11::basic_string std::operator+(const _CharT*, const std::__cxx11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc|1147|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'const _CharT*' and 'Odcinek'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc|1163|note: candidate: template std::__cxx11::basic_string std::operator+(_CharT, const std::__cxx11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.tcc|1163|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'const std::__cxx11::basic_string' and 'int'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4966|note: candidate: template std::__cxx11::basic_string std::operator+(const std::__cxx11::basic_string&, const _CharT*)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4966|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'const std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4982|note: candidate: template std::__cxx11::basic_string std::operator+(const std::__cxx11::basic_string&, _CharT)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4982|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'const std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4994|note: candidate: template std::__cxx11::basic_string std::operator+(std::__cxx11::basic_string&&, const std::__cxx11::basic_string&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|4994|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5000|note: candidate: template std::__cxx11::basic_string std::operator+(const std::__cxx11::basic_string&, std::__cxx11::basic_string&&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5000|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'const std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5006|note: candidate: template std::__cxx11::basic_string std::operator+(std::__cxx11::basic_string&&, std::__cxx11::basic_string&&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5006|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5018|note: candidate: template std::__cxx11::basic_string std::operator+(const _CharT*, std::__cxx11::basic_string&&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5018|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'const _CharT*' and 'Odcinek'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5024|note: candidate: template std::__cxx11::basic_string std::operator+(_CharT, std::__cxx11::basic_string&&)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5024|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: mismatched types 'std::__cxx11::basic_string' and 'int'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5030|note: candidate: template std::__cxx11::basic_string std::operator+(std::__cxx11::basic_string&&, const _CharT*)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5030|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'std::__cxx11::basic_string'|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5036|note: candidate: template std::__cxx11::basic_string std::operator+(std::__cxx11::basic_string&&, _CharT)|
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\bits\basic_string.h|5036|note: template argument deduction/substitution failed:|
C:\Users\mkkar\Desktop\Programowanie obiektowe ~kolokwium\Figura\main.cpp|15|note: 'Odcinek' is not derived from 'std::__cxx11::basic_string'|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
Odcinek& operator+(int liczba);
^
Odcinek Od;
Od.ile = Od.ile+liczba;
Odcinek Od;
Od.ile = ile+liczba;
Odcinek& operator+(int liczba)
{
Odcinek Od; // Od created here
Od.ile = ile+liczba;
Od.imie = imie;
Od.znak = znak;
return Od;
} // Od destroyed here
class Odcinek : public Figura
{
public:
Odcinek(int ile,string imie,char znak): Figura(ile,imie,znak){}
Odcinek operator+(int liczba) const;
virtual void wypisz() const;
};
Odcinek Odcinek::operator+(int liczba) const
{
Odcinek Od;
Od.ile = ile+liczba;
Od.imie = imie;
Od.znak = znak;
return Od;
}