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
Templates 指向前向声明模板类的指针_Templates_C++11 - Fatal编程技术网

Templates 指向前向声明模板类的指针

Templates 指向前向声明模板类的指针,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

我创建了一个简单的基于模板的类。现在,我正在尝试编写一个流阅读器和写入器。我只需要一个指向流中数组的指针。但它不起作用。 我正在使用VS2015

////////////////////////////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)
    {