Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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++_Variadic Templates - Fatal编程技术网

C++ 变量类的文件包含问题

C++ 变量类的文件包含问题,c++,variadic-templates,C++,Variadic Templates,我有一个可变模板类,我试图在另一个文件中包含我的名称空间,以便在类中使用其中的一些函数 但是,包含名称空间的文件还包含一个与该类相关的using语句,因为我还需要该名称空间中的一些函数的变量类 我在尝试这样做时犯了很多错误,我想知道是否有办法实现我的目标 我的意思是: #include "VariadicClass.hpp" #include <stdint.h> using VariadicClass3 = VariadicClass<3, int> namespac

我有一个
可变模板类
,我试图在另一个文件中包含我的名称空间,以便在类中使用其中的一些函数

但是,包含名称空间的文件还包含一个与该类相关的using语句,因为我还需要该名称空间中的一些函数的变量类

我在尝试这样做时犯了很多错误,我想知道是否有办法实现我的目标

我的意思是:

#include "VariadicClass.hpp"
#include <stdint.h>
using VariadicClass3 = VariadicClass<3, int>

namespace mynamespace {
   int function1(VariadicClass3 param){return 1;}
   int function2(){return 0;}
}

////////////////////////////////////////////
#include "MyNamespace.hpp"
#include <stdint.h>
template<std::size_t T_size, typename T>
class VariadicClass3 {
    public:
        //...
        void function1(){
            auto some_var = mynamespace::function2();
        }
};
#包括“VariadicClass.hpp”
#包括
使用VariadicClass3=VariadicClass
名称空间mynamespace{
int function1(VariadicClass3参数){return 1;}
int function2(){return 0;}
}
////////////////////////////////////////////
#包括“MyNamespace.hpp”
#包括
模板
类别3{
公众:
//...
无效函数1(){
auto some_var=mynamespace::function2();
}
};

您发布的代码中有几处输入错误。暂时忽略这一点,您可以使用如下所示的转发声明来删除循环依赖项:

MyNamespace.hpp:

#pragma once

#include <cstdint>

// Forward declare the class.
template<std::size_t T_size, typename T> class VariadicClass;

using VariadicClass3 = VariadicClass<3, int>;

namespace mynamespace {

   // Use the class only in reference in declaration.
   // If the implementation of the function needs to 
   // access to members of VariadicClass3, it needs to be
   // in a .cpp file where VariadicClass.hpp can be #include'd.
   int function1(VariadicClass3 const& param){return 0;}

   int function2(){return 1;}
}
#pragma一次
#包括
//向前声明类。
模板类和模板类;
使用VariadicClass3=VariadicClass;
名称空间mynamespace{
//仅在声明中的引用中使用该类。
//如果功能的实现需要
//访问VariadicClass3的成员,需要
//在.cpp文件中,VariadicClass.hpp可以是#include'd。
int function1(VariadicClass3常量和参数){return 0;}
int function2(){return 1;}
}
VariadicClass.hpp:

#pragma once

#include "MyNamespace.hpp"

template<std::size_t T_size, typename T>
class VariadicClass {
   public:
      //...
      void function1(){
         auto some_var = mynamespace::function2();
      }
};
#pragma一次
#包括“MyNamespace.hpp”
模板
类变量类{
公众:
//...
无效函数1(){
auto some_var=mynamespace::function2();
}
};

您发布的代码中有几处输入错误。暂时忽略这一点,您可以使用如下所示的转发声明来删除循环依赖项:

MyNamespace.hpp:

#pragma once

#include <cstdint>

// Forward declare the class.
template<std::size_t T_size, typename T> class VariadicClass;

using VariadicClass3 = VariadicClass<3, int>;

namespace mynamespace {

   // Use the class only in reference in declaration.
   // If the implementation of the function needs to 
   // access to members of VariadicClass3, it needs to be
   // in a .cpp file where VariadicClass.hpp can be #include'd.
   int function1(VariadicClass3 const& param){return 0;}

   int function2(){return 1;}
}
#pragma一次
#包括
//向前声明类。
模板类和模板类;
使用VariadicClass3=VariadicClass;
名称空间mynamespace{
//仅在声明中的引用中使用该类。
//如果功能的实现需要
//访问VariadicClass3的成员,需要
//在.cpp文件中,VariadicClass.hpp可以是#include'd。
int function1(VariadicClass3常量和参数){return 0;}
int function2(){return 1;}
}
VariadicClass.hpp:

#pragma once

#include "MyNamespace.hpp"

template<std::size_t T_size, typename T>
class VariadicClass {
   public:
      //...
      void function1(){
         auto some_var = mynamespace::function2();
      }
};
#pragma一次
#包括“MyNamespace.hpp”
模板
类变量类{
公众:
//...
无效函数1(){
auto some_var=mynamespace::function2();
}
};