【问题标题】:class template with tuple declaration带有元组声明的类模板
【发布时间】:2018-04-04 05:57:20
【问题描述】:

我在构建项目时遇到问题,代码附在下面。我编写了 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...);
    }

}

【问题讨论】:

  • 在询问有关构建错误的问题时,请始终在问题中包含实际错误。复制粘贴它们,作为文本,完整、完整且未经修改。
  • 这不是完整的、未修改的或复制粘贴的。标记 all 或错误文本并将其复制粘贴到问题中自己的“代码”块中,然后用 cmets 标记代码中错误所在的行。编译器倾向于添加信息注释,这些注释可能对查看很有帮助。
  • 你能在rextester.com/l/cpp_online_compiler_gcc987654322@这样的地方重现错误吗?
  • @Yola 添加了指向 rextester 的链接here。谢谢你的建议。
  • 我在你的代码中看不到任何#include,而且std::tuple 也不是神奇的可用

标签: c++ templates tuples variadic-templates


【解决方案1】:

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

#include <tuple>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多