Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++_Templates_Compiler Errors - Fatal编程技术网

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的
或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;
}