输出类型向量的成员类型

时间:2016-05-05 11:18:08

标签: c++ c++11

我有一个void my_top_class::output_member(sometype var_to_output, std::ofstream &out) { // Iterate over the vector and output the member variable out << my_class->var_to_output << std::endl; // Or something similar } 的向量,并且希望能够将此类的成员变量传递给函数我想输出。这个向量本身就是一个类的一部分。

例如我想

 my_top_class.output_member(var1, file_out);
 my_top_class.output_member(var2, file_out);

然后就这样做

{{1}}

目前我对每个成员变量都有一个单独的函数,这感觉很麻烦

2 个答案:

答案 0 :(得分:2)

使用pointer to data members(这只是一个例子,你应该根据自己的情况采用它):

template <typename MemberType>
void output_member(const MyClass& my_object, MemberType MyClass::* var_to_output)
{
    std::cout << my_object.*var_to_output << std::endl;
}

此处.*pointer to member access operators之一。

使用示例:

struct MyClass
{
    int member_variable_;
};

// ...

MyClass my_object{42};

output_member(my_object, &MyClass::member_variable_);

Live demo

答案 1 :(得分:0)

也许只需创建一个用于存储元素的新类?像这样:

class Memory 
{
   private:
std::vector<yourclass> vec;

public:
std::vector<yourclass> getVector()
{
return vec;
}
};

然后在主类主窗口中创建该类的对象,无论您使用什么。实际上你没有提供太多的信息,很难回答你的问题。