C++ C++;:使用元组的TypeDef

C++ C++;:使用元组的TypeDef,c++,C++,我正在尝试使用元组创建一个typedef,这是我的代码 #include <iostream> #include <boost/tuple/tuple.hpp> #include <boost/tuple/tuple_io.hpp> #include "boost/tuple/tuple_comparison.hpp" using namespace std; typedef tuple<std::string, unsigned i

我正在尝试使用元组创建一个typedef,这是我的代码

#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include "boost/tuple/tuple_comparison.hpp"
using namespace std;
typedef tuple<std::string, unsigned int, double>  Person;

void Print(Person people)
{

};

int main()
{
    using boost::tuple;

    Person p0 (string("Udbhav"),10,10);
    return 0;
}
#包括
#包括
#包括
#包括“boost/tuple/tuple\u comparison.hpp”
使用名称空间std;
typedef元组人;
作废打印(人)
{
};
int main()
{
使用boost::tuple;
人p0(字符串(“Udbhav”),10,10;
返回0;
}

执行此操作时,我无法从boost调用p0上的get()。有人能指出我做错了什么吗?

您的程序中有一个问题,您使用了讨厌的
名称空间std语句,因此您的
typedef
将元组解析为
std::tuple
。看起来您假设
使用boost::tuplemain()
中的code>允许您使用boost中的一个,这是错误的
typedef
不是宏,名称解析发生在声明时,而不是使用它。您可以通过使用namespace std删除
来测试这一点和您的
typedef
将无法编译:


谢谢你的帮助。确保性病不会成为一个问题,并且有效。这是解决办法

#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include "boost/tuple/tuple_comparison.hpp"
using namespace std;
typedef  boost::tuple<string,unsigned int,double>  Person;

void Print(Person people)
{
    cout << "Name : " << people.get<0>() << endl;
    cout<< "Age : " << people.get<1>() << endl;
    cout << "Height : " << people.get<2>() << endl;
};

int main()
{
    using boost::tuple;
    Person p0("Shuniya",0,0);
    Person p1("Alpha",1,1);
    Person p2("Beta", 2, 2);
    Print(p0);
    p0.get<1>() = 1;
    Print(p0);

    return 0;
}

#包括
#包括
#包括
#包括“boost/tuple/tuple\u comparison.hpp”
使用名称空间std;
typedef boost::元组人;
作废打印(人)
{

cout@Slava适用于较小的程序。告诉我们您在哪里使用p0.get()?@RohanBari正确,除非它产生OP存在的问题。@Dai
boost::tuple
在没有命名空间的情况下无法解决。
typedef
不是宏号,不包括任何其他文件。我正在尝试访问get()函数本身。尝试在人p0上调用它。