2016-05-05 45 views
1

我有一個向量unique_ptr<my_class>,並希望能夠傳遞給我想要輸出的這個類的成員變量的函數。這個向量本身就是一個類的一部分。類型向量的輸出成員類型

比如我想

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); 

此刻,我對每一個成員變量獨立的功能,這樣的感覺很麻煩

回答

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

+0

他已經有一個'my_object'不過,第二PARAM也許應該是一個outstream。不錯的解決方案。 –

+0

@GillBates正如我所寫,它只是一個例子。謝謝。 – Constructor

0

也許只是創建一個你將用來存儲元素的新類?像這樣:

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

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

然後在您的主類主窗口中創建該類的對象,無論您正在使用什麼。其實你沒有提供太多的信息,很難回答你的問題。