C++ 在&;之前需要构造函数、析构函数或类型转换;代币
我的项目中出现了一个神秘的错误,上面写着: 预期的构造函数、析构函数或类型转换C++ 在&;之前需要构造函数、析构函数或类型转换;代币,c++,templates,compiler-errors,C++,Templates,Compiler Errors,我的项目中出现了一个神秘的错误,上面写着: 预期的构造函数、析构函数或类型转换 它不允许我使用重载的操作符您不能在文件中声明模板,然后将其定义到另一个文件中。你只能定义它 希望它对您有所帮助。您可能需要将ostream与std限定为: std::ostream&operator您应该使运算符预期的构造函数、析构函数或类型转换表明它不将ostream识别为类型(即,它尚未在此范围内声明)。使用std::前缀并不足以解决问题;还必须包括从属文件 #include <ostream>
它不允许我使用重载的
操作符您不能在文件中声明模板,然后将其定义到另一个文件中。你只能定义它
希望它对您有所帮助。您可能需要将ostream
与std
限定为:
std::ostream&operator您应该使运算符预期的构造函数、析构函数或类型转换表明它不将ostream识别为类型(即,它尚未在此范围内声明)。使用std::前缀并不足以解决问题;还必须包括从属文件
#include <ostream>
#包括
无需声明以下内容:
template <class T>
ostream& operator<<(ostream&, const MyVector<T>);
模板
ostream&operator您是否有使用std::ostream的使用名称空间std的code>或a代码>(恶心)在什么地方?如果没有,编译器就不会知道什么是ostream
。有人能压缩上面代码的格式吗?解释一下你在哪里定义了模板类。在同一个文件或不同的文件中。注释应该告诉我们哪些不明显。您不需要我们告诉您默认ctor的用途、参数或返回值。增加
的目的注释很好。最糟糕的是,当你做了一个填塞但忘记更新评论时,评论已经过时了;这些现在很混乱,是的,你可以。但即使不能,也不会导致此处报告的错误消息。
template <class T> std::ostream& operator<<(ostream& o, const MyVector<T>& V)
#include <ostream>
template <class T>
ostream& operator<<(ostream&, const MyVector<T>);
#include <iostream>
using namespace std;
template <class T>
class A
{
public:
A();
int _size;
};
template <class T>
ostream& operator<<(ostream&, const A<T> p)
{
cout<<"in ostream"<<endl;
}
template <class T>
A<T>::A()
{
_size = 90;
cout<<_size<<endl;
}
int main()
{
A<int> ob;
cout<<ob;
return 0;
}