我試圖將一個類的成員作爲參數傳遞給一個函數(不是成員方法)。我的意圖的簡單例子就是這樣。傳遞成員名稱作爲參數
template <typename ObjType>
void myOutput(ObjType* obj, ????)
{
std::cout << obj->???? << std::endl;
}
struct A
{
int a;
};
struct B
{
std::string b;
};
int main()
{
A A1;
B B1;
A1.a = 1;
B1.b = "something";
myOutput(&A1, A1::a);
myOutput(&B1, B1::b);
return 0;
}
所以我的問題是我應該怎樣取代「????」用?我沒有使用C++ 11。
謝謝。
編輯:
爲了澄清我的意圖。函數myOutput並不真正知道我的成員的名字,我不想使用像memberToString()之類的函數。
所以輸出應該看起來像這樣的第一個電話。
void myOutput(A* obj, ????)
{
std::cout << obj->a << std::endl;
}
和第二
void myOutput(B* obj, ????)
{
std::cout << obj->b << std::endl;
}
如果你正在傳遞對象,爲什麼你還想傳遞一個成員變量?您可以使用提供的對象直接訪問它們。 –
爲什麼你傳遞兩個參數?你到底想做什麼?你不能直接從main()直接調用一個獨立的方法,直到它是static.Please檢查 – manish
爲什麼你不只是添加一個參數到你的func,如模板 –
Nik