带有元组声明的类模板

时间:2018-04-04 05:57:20

标签: c++ templates tuples variadic-templates

我在使用下面附带的代码构建项目时遇到问题。我编写了TemplClass并构建了没有错误的项目。当我编写一个方法dostuff(),在main函数中调用它并构建项目时,在构建期间引发了一条错误消息“使用未定义类型...(请参阅与元组相关的代码)”。

问题出在哪里?我对cpp很新。但在c#中经验丰富。我不明白错误消息和提供的代码之间的关系。

你能帮帮我吗?谢谢。

注意:该代码只是学校作业的摘录。

编辑:添加了错误消息 EDIT2:Retexter添加了here

// main.cpp
int main()
{
    using namespace namespace1;
    dostuff("", 0, 0.0);
    return 0;
}

//otherfile.hpp
namespace namespace2
{

    template<typename ... TL>
    class TemplClass
    {
    public:
        TemplClass(TL ...pl): storedParams(pl...)
        {
            //Severity  Code    Description Project File    Line    Suppression State
            //Error C2027   use of undefined type 'std::tuple<const char (&)[1],int,double>'    advcpp.split     
          //c:\users\jry\source\repos\advcpp.split\advcpp.split\test01split.hpp 12  


            auto storedParamsLoc = std::tuple<TL ...>(pl...);

        }


    private:

    //Severity  Code    Description Project File    Line    Suppression State
    //Error C2079   'namespace2::TemplClass<const char (&) 
    //[1],int,double>::storedParams' uses undefined class 'std::tuple<const char (&) 
    //[1],int,double>'  advcpp.split     
    //c:\users\jry\source\repos\advcpp.split\advcpp.split\test01split.hpp   25  
        std::tuple<TL ...> storedParams;
    };

}

namespace namespace1
{
    template<typename ...TL>
    namespace2::TemplClass<TL ...> dostuff(TL && ...pl)
    {
        return namespace2::TemplClass<TL...>(pl...);
    }

}

1 个答案:

答案 0 :(得分:0)

在rextester上提供的示例中,很明显您忘记包含元组的标题。

#include <tuple>