输出类的向量的一个成员
Outputting a member of a vector of classes
我有两个类
class MyStoreClass
{
public:
std::vector<std::unique_ptr<MyClass>> my_vec;
};
和
class MyClass
{
public:
double member1;
int member2;
};
我有一个大约10000个MyClasses的向量我希望能够使用一个函数,如
template<typename T>
void MyStoreClass::output_member(T MyClass::* chosen_member)
{
std::cout << chosen_member << std::endl;
}
我真的不知道从这里该往哪里走。
编辑:我想从向量member
您忘记描述函数应该做什么,所以我假设您希望函数打印my_vec
的所有元素的相应成员。
为了使用指针到成员的解引用操作符,需要显式解引用unique_ptr
。
其余部分很简单:
template<typename T>
void MyStoreClass::output_member(T MyClass::* chosen_member)
{
for (const auto& ptr: my_vec)
{
if (ptr)
std::cout << (*ptr).*chosen_member << std::endl;
else
std::cout << "[null]" << std::endl;
}
}
继续假设,我将假设你所说的"标准"是指"我习惯的c++ 11之前的循环",因为基于范围的循环已经成为标准了好几年了。
template<typename T>
void MyStoreClass::output_member(T MyClass::* chosen_member)
{
for (std::vector<std::unique_ptr<MyClass>>::const_iterator i = my_vec.begin();
i != my_vec.end();
++i)
{
if (*i)
std::cout << (*i)->*chosen_member << std::endl;
else
std::cout << "[null]" << std::endl;
}
}
相关文章:
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 使用只有一个成员的工会的目的是什么?
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- std::mutex作为一个成员变量对多个线程来说是安全的吗
- 使用线程从另一个成员函数调用一个Member函数
- 如何通过指针将模板成员函数传递给另一个成员函数
- 只有一个成员的匿名联盟
- 复制一个对象并使两者共享一个成员变量 (C++)
- 初始化指针或引用成员变量以指向另一个成员
- 在另一个成员函数中调用成员函数时'int'之前的预期主表达式
- C 将成员函数作为参数传递给另一个成员函数
- 将结构编写为二进制,其中一个成员是字符串
- 如何在另一个成员函数中修改具有常量返回类型的成员函数的返回值
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 如何使一个成员变量等于在main()中设置的另一个成员变量
- 在另一个成员中动态添加类成员
- 在对结构数组的一个成员进行排序后,移动其成员的其余部分
- 将类成员函数作为参数从同一类的另一个成员函数传递