我有一個成員函數返回一個const
引用類的一個實例。如何獲取對象的const引用並使用該引用更改對象(使用const_cast)?
例子:
class State
{
const City* city1;
public:
State(const City& c) : city1(c) {}
const City& getReference() const {return *city1;}
void changeStuff();
};
我如何獲得一個非const City *
使用的const_cast和getReference()指向city1?
而且,這樣做我能做到我想要的東西,而無需使用的const_cast如下: (假設已經有一個國家叫state1
一個實例)
City ref = state1.getReference(); //Why does it work?
City * ptr = &ref; //This is what I wanted, but not this way
ref->changeStuff(); //How can I call functions changing things if the reference was constant?
我怎麼能得到一個非-const引用來自返回const引用的函數,甚至是調用者?
感謝您的關注
爲什麼你想要一個非const指針?這似乎違反了恆常的全部目的。 – templatetypedef
我只是想問templatetypedef同樣的問題。如果你想'入侵',請明確澄清,以免人們不會因爲告訴你的設計錯誤而嘮叨你。 – tia
這有點複雜。首先,你的'State'類甚至不是有效的C++代碼(你正在向ctor中的指針投擲引用)。然而,更令人困惑的是,'changeStuff'是'State'的成員,但是你想用'City'對象調用它(這兩種類型都發生同樣的方法嗎?爲什麼還要在這裏提到它?)。另外,你的'ref'變量不是一個參考。 – bitmask