Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修复重载操作数+;?_C++_Class_Operator Overloading - Fatal编程技术网

C++ 如何修复重载操作数+;?

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

我有过载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);
{
    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;
}