C++:TypeDef使用元组

C++: TypeDef using Tuples

本文关键字:元组 TypeDef C++      更新时间:2023-10-16

我正试图使用元组创建一个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;
}

我无法调用get<gt;当我这样做的时候,从boost到p0。有人能指出我做错了什么吗?

程序中的问题是,您使用了令人讨厌的using namespace std;语句,因此typedef将元组解析为std::tuple。看起来您认为main()中的using boost::tuple;允许您使用boost中的一个,这是错误的。typedef不是一个宏,名称解析发生在声明时,而不是使用它。您可以通过删除using 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;
}