對不起,有新手問題,但我想引用一個類/結構類型的組件作爲函數中的參數傳遞。我不知道是否使用如何在C++中引用結構組件
blah.memberFunction(&blah.component)
或
blah.memberFunction((&blah).component)
對不起,有新手問題,但我想引用一個類/結構類型的組件作爲函數中的參數傳遞。我不知道是否使用如何在C++中引用結構組件
blah.memberFunction(&blah.component)
或
blah.memberFunction((&blah).component)
假設你的成員函數如下:
blah::memberFunction(blahType& component)
調用它是這樣的:
blah.memberFunction(blah.component)
使用&
ope rator給你一個指針,與參考不同。參考文獻不需要操作員。
你是否參考類組件data members?在你所說的具體情況中:在大多數情況下,使用成員作爲參數調用方法是無用的。考慮代碼:
class blah
{
public:
blah() : component(0) {}
void memberFunction() { component ++; }
int component;
}
int main()
{
blah b;
std::cout << b.component; //output = 0
b.memberFunction();
std::cout << b.component; //output =1
}
請注意,在一個類的方法我已經有訪問數據成員:我爲什麼要使用它作爲它自己的方法的參數,並沒有聽起來有點沒用?
無論如何,如果你真的有一個很好的理由來實現它使用一個成員的引用,不僅僅是申報方法receive arguments by reference:
class blah
{
public:
blah() : component(0) {}
void callMemberFunction()
{
memberFunction(component);
}
void memberFunction(int &member_reference) { member_reference++; }
int component;
}
int main()
{
blah b;
std::cout << b.component <<"\n"; //output = 0
b.callMemberFunction();
std::cout << b.component <<"\n"; //output =1
}
你想傳遞一個指針或引用? – Pubby 2013-04-29 21:26:41
如果您使用的是C++ 11,請考慮使用lambda:[](T blah){return blah.component; } – 2013-04-29 21:27:59
@Pubby參考 – gr33kbo1 2013-04-29 21:33:46