我有一个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}}
目前我对每个成员变量都有一个单独的函数,这感觉很麻烦
答案 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_);
答案 1 :(得分:0)
也许只需创建一个用于存储元素的新类?像这样:
class Memory
{
private:
std::vector<yourclass> vec;
public:
std::vector<yourclass> getVector()
{
return vec;
}
};
然后在主类主窗口中创建该类的对象,无论您使用什么。实际上你没有提供太多的信息,很难回答你的问题。