我計劃讓兩個bool類成員(m_alive
& m_dead
)使其值始終相反。這似乎是一些愚蠢的(事實上,它可能只是愚蠢的),但你可以在下面的代碼中看到,但是我真正尋找的是有一個更清晰的方式來檢查視情節對象狀態,它將不會輸入!m_alive
或!m_dead
。 所以,是的,我並不真的需要這兩個成員,但我想不出一個更簡單的方法來做到這一點。保留兩個具有相反值的bool類成員
我腦海中想到的第一個想法是創建一個函數,如果另一個改變,它也會改變其中一個的狀態,但我確信需要一個更簡單,更簡單,更快捷的方法保持每個人的正確價值。由於我們計劃創建不同的對象並且看起來並不實際,因此我們不可能使用define
來完成這項工作。
#define object1.m_death= !object1.m_alive;
#define object2.m_death= !object2.m_alive;
// ...
所以在這裏你必須同時具有成員的主要思路:
class myclass
{
public:
// (...)
private:
bool m_alive;
bool m_death; // Always !m_alive
};
int main()
{
myclass myobject;
// (...)
if (myobject.m_dead)
//...
if (myobject.m_alive) // clearer than !myobject.m_dead()
// ...
}
的任何建議如何對keep'em更新是值得歡迎的,以及實現我的想法的任何其他方式。提前致謝!
愛德華
PD:在重新閱讀我的問題,枚舉類型剛剛來到我的腦海。
它將emply檢查myobject.m_status==dead
或myobject.m_status==alive
,作爲dead_or_alive枚舉類型類成員dead_or_alive m_status
的dead
和alive
可能的值。
請問這是什麼,我正在尋找一個更好的途徑,儘管是一個長一點的語法?
最後編輯:
感謝所有誰評論和回答。下面是我最後採取的解決辦法:
enum Piece_status:bool{ dead= false, alive= true};
class Piece
{
public:
bool isAlive() const {return m_status;}
bool isDead() const {return !m_status;}
protected:
Piece_status m_status; // dead=false, alive=true
};
他們是私有的。所以你的代碼不會編譯。你應該添加一個查詢到你的類而不是添加冗餘字段。 'myobject.is_dead()'或'myobject.is_alive()'都可以用一個'bool'來實現。 – StoryTeller
這是多餘的,並非真的需要。 '!myobject.m_dead'和myobject.m_alive一樣清晰。 –
兩種方法:is_alive is_dead並將其實現基於您的布爾 –