所以我有一個關於通過引用傳遞的問題。我嘗試通過引用將對象傳遞給成員函數,並讓該成員函數使用作爲參數傳遞的引用調用另一個成員函數。但是,編譯器說沒有找到調用的成員函數。爲什麼?下面的代碼將描述我的方式無奈我無法用言語表達自理C++參考混淆(以及一些複製構造函數)
// CODE 1
class someClass {
int data;
public:
someClass(someClass&);
someClass someFunction(const someClass&)
};
someClass::someClass(someClass &obj) {
data = obj.data;
}
someClass someClass::someFunction(const someClass &obj) {
someClass demo(obj); // <- this doesn't work
someClass demo(&obj); // <- neither does this
someClass demo(*obj); // <- or this
someClass demo2(*this); // <- this works though
}
有一個很難理解這一點,似乎微不足道,但我確實感謝所有幫助我可能會。此外,在xcode中發生了一些神祕的事情,當我嘗試以下(指代碼2)時,它就起作用了。任何想法爲什麼?
// CODE 2
class someClass {
int data;
public:
someClass(someClass&);
void setData(int x) { data = x; }
};
int main() {
someClass first;
setData(10);
someClass second;
second = first;
//Mysteriously, it worked without overloading the '=' operator. Why?
//Also, I mentioned XCode just in case someone might say it's compiler specific
return 0;
}
我認爲在獲得很多幫助之前,您需要至少展示demo和demo2的原型。 –