CPP,错误,类,没有匹配,即使声明已经给出
CPP, error, classes, no match for even though the declaration is given
我正在为我的类编写代码,并且有一个我无法处理的错误。错误如下。此外,我不允许更改主文件中的任何内容:
In file included from lab13.cpp:15:0:
lab13.h: In member function ‘TSeries& TSeries::operator()(int, int)’:
lab13.h:10:39: warning: no return statement in function returning non-void [-Wreturn-type]
TSeries &operator()(int, int){}
^
g++ -c -Wall lab13f.cpp
In file included from lab13f.cpp:1:0:
lab13.h:15:10: error: ‘ostream’ in namespace ‘std’ does not name a type
friend std::ostream &operator<<(std::ostream &o,const TSeries &ts);
^
lab13.h: In member function ‘TSeries& TSeries::operator()(int, int)’:
lab13.h:10:39: warning: no return statement in function returning non-void [-Wreturn-type]
TSeries &operator()(int, int){}
^
lab13f.cpp: At global scope:
lab13f.cpp:13:9: error: prototype for ‘TSeries TSeries::operator()(int, int)’ does not match any in class ‘TSeries’
TSeries TSeries::operator()(int, int){}
^
In file included from lab13f.cpp:1:0:
lab13.h:10:18: error: candidate is: TSeries& TSeries::operator()(int, int)
TSeries &operator()(int, int){}
^
lab13f.cpp:16:9: error: prototype for ‘TSeries TSeries::operator+(TSeries&)’ does not match any in class ‘TSeries’
TSeries TSeries::operator+(TSeries &ts){
^
In file included from lab13f.cpp:1:0:
lab13.h:9:17: error: candidate is: const TSeries TSeries::operator+(const TSeries&) const
const TSeries operator+(const TSeries &ts)const;
^
lab13f.cpp:45:19: error: definition of implicitly-declared ‘TSeries::~TSeries()’
TSeries::~TSeries(){}
^
lab13f.cpp: In member function ‘TSeries& TSeries::operator=(TSeries (*)(int, int))’:
lab13f.cpp:47:52: warning: no return statement in function returning non-void [-Wreturn-type]
TSeries &TSeries::operator=(TSeries(int a, int b)){}
^
lab13f.cpp: In function ‘std::ostream& operator<<(std::ostream&, const TSeries&)’:
lab13f.cpp:51:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
make: *** [lab13f.o] Błąd 1
我花了好几天试图解决这个问题,最后还是放弃了。希望有人能帮助我摆脱困境:)我会非常感激的。我忘了补充,主文件是导师写的,在任何情况下我都不允许改变任何东西。
TSeries &operator=(TSeries(int a, int b));
声明了一个函数,该函数的参数是一个函数,该函数有两个输入类型为int
,返回类型为TSeries
。
我认为你不是故意的。
复制赋值操作符的声明语法为:
TSeries &operator=(TSeries const& rhs);
还有,你那句话的意思也不太清楚:
TSeries series4=series1(2,4);
也许,你想用:
// Will use the compiler generated copy constructor
// since you haven't declared one.
TSeries series4=series1;
或
// Will use the constructor that takes two ints
TSeries series4(2,4);
可能是打错了。:
TSeries series4=series1(2,4);
不使用构造函数参数2
和4
创建series4
,而是尝试调用series1
的(注意:这是变量)operator()(int, int)
。没有定义这样的操作符
我猜你需要
TSeries series4=TSeries(2,4);
或者更好:
TSeries series4(2,4);
同样,像这样的结构:
series1+=1.,0.,3.;
实际上只调用operator +=
一次。澄清一下,我不确定你们是否期望这样。你可以在c++中读到operator,
。
所以,如果你想添加3个,你需要:
series1+=1.;
series1+=0.;
series1+=3.;
还要注意@RSahu关于operator=
的回答,我给它点了赞(很好,我没有注意到)。
编译器报错,因为series1(2,4)调用的是TSeries::operator()(int, int),而不是构造函数TSeries(int, int)
相关文章:
- 在气泡排序程序中未声明错误功能
- 未在此范围内声明错误 'xy'
- 在此范围内未声明错误"Clreol"
- 为什么 C 编译器不在 for 循环体中给出重新声明错误?
- 如何修复范围内的字符串声明错误
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 无法识别的模板声明错误 - 不明白我做错了什么
- C 如何从构造函数中声明(错误C2065未宣布的标识符)
- C 无法解释的类“尚未声明”错误,这是由于名称空间而导致的
- 如何解决声明错误
- 在标题文件中获取声明错误
- 异常声明错误
- "inet_ntoa"未声明错误
- #include <string> 导致很多'<blank>'尚未声明错误
- 类声明错误
- C++成员函数未声明错误时(当它看起来是错误时)
- 代码块 HelloWorld C 示例不起作用:未声明错误"ptrdiff_t"
- 头文件类成员函数声明错误:"incomplete type name in nested name specifier"
- 预期语句和预期声明错误 c++
- 针对 android 编译的问题..."未在此范围内声明"错误