我在使用下面附带的代码构建项目时遇到问题。我编写了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...);
}
}
答案 0 :(得分:0)
在rextester上提供的示例中,很明显您忘记包含元组的标题。
#include <tuple>