Templates 指向前向声明模板类的指针
我创建了一个简单的基于模板的类。现在,我正在尝试编写一个流阅读器和写入器。我只需要一个指向流中数组的指针。但它不起作用。 我正在使用VS2015Templates 指向前向声明模板类的指针,templates,c++11,Templates,C++11,我创建了一个简单的基于模板的类。现在,我正在尝试编写一个流阅读器和写入器。我只需要一个指向流中数组的指针。但它不起作用。 我正在使用VS2015 ////////////////////////////Array.h #include "Stream.h" template<typename... Types> class TArray {}; template<typename T0> class TArray<T0> { friend Stre
////////////////////////////Array.h
#include "Stream.h"
template<typename... Types> class TArray {};
template<typename T0> class TArray<T0>
{
friend Stream& << (Stream& stream, const TArray& arr)
{
...
}
...
}
///////////////////////////////Stream.h
class Stream
{
public:
class TArray<char>* mArray; //ERROR, it dose not work
}
//阵列.h
#包括“Stream.h”
模板类TArray{};
模板类TArray
{
好友流&模板类TArray
{
朋友流,
{
好友流(&arr)
{
要声明前面为特定类T0.T0声明的模板规范,必须已知已定义的类,例如您的示例中的char。您需要在Stream.h文件中转发declare TArray template类。template class TArray{…}不是一个具体的类,不生成任何机器代码。TArray是一个,mArray声明的正确语法应该是:…TArray*mArray;…友元函数是类内的声明,而不是定义。
template< typename T0 > class TArray
{
friend Stream& << (Stream& stream, const TArray& arr)
{
template<> class TArray< T0 >
{
friend Stream& << (Stream& stream, const TArray< T0 >& arr)
{