2011-03-28 5 views
1

eaten 부울 필드가있는 Doughnut 클래스가 있습니다. 나는 부울을 전역 변수로 만들 필요가 있지만, 많은 사람들이 "먹을"수 있고 그렇지 않은 것들을 많이 만들 수 있도록 로컬에 있어야합니다. 도넛이 그래픽으로 사라지면 먹을 때 사라져야합니다.로컬/전역 부울 문제

글로벌 설정 문제는 내 도넛이 먹을 때 "먹는"것으로 표시되며 먹는다면 사라지지 않을 것입니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

도넛? –

+0

이것이 농담으로 여겨지면 나는 이해하지 못합니다. – fredoverflow

+0

당신의 질문이 더 잘 표현되어야한다고 생각합니다. –

답변

7

도넛 당 부울이 있습니다.

std::map<Doughnut, bool> Doughnuts; 
)

class Doughnut 
{ 
    bool m_bEaten; 
}; 

또는 아마 당신은 당신이 매핑을 가질 수 있도록, 도넛의 정보를 저장하지 않는 : 당신이 도넛 클래스가있는 경우

, 멤버 플래그를 추가 당신이 10 도넛을 알고있는 경우

그러나 당신은 당신이 doughnu 플래그를 개최 정적 배열을 가질 수 :) 도넛에 대한 운영자 <을 구현하기 위해

이 필요하거나 것이다

std::vector<bool> atenDoughnuts; 

또는 사용 템플릿 당신의 도넛은 컴파일 시간을 먹고 메타 프로그래밍을 : 당신이 컴파일시 사용 동적 컨테이너에서 도넛의 번호를 모르는 경우,

bool eatenDoughnuts[10]; // Initialize properly. 

// Eat any doughnut you like: 
eatenDoughnuts[2] = true; 

// Check if you have eaten doughnut number 2: 
if(eatenDoughnuts[2]) 
{ 
    // Pure doughnut number 2. 
} 

을 또는 : t은 먹 ;)

질문은 편집되었으므로 도넛 클래스가 있어야합니다. 그래서 여기 간다 :

#include <vector> 

class Doughnut 
{ 
public: 
    enum Kind {VANILLA, CHOCOLATE}; // The kind of your doughnut. 

    Doughnut(Kind k = VANILLA) // VANILLA is the default. 
     : kind(k), eaten(false) {} 

    void eat() { eaten = true; } // We luv eating doughnuts. 
    bool isEaten() { return eaten; } 

private: 
    Kind kind; // The kind of your doughnut. 
    bool eaten; // Has anyone eaten it yet? 
}; 

int main() 
{ 
    // Your delicious doughnuts package :) 
    std::vector<Doughnut> deliciousDoughnuts; 

    // Go buy some delicious doughnuts. 
    deliciousDoughnuts.push_back(Doughnut(Doughnut::VANILLA)); 
    deliciousDoughnuts.push_back(Doughnut(Doughnut::CHOCOLATE)); 
    deliciousDoughnuts.push_back(Doughnut(Doughnut::VANILLA)); 

    // You love delicious chocolate doughnut? EAT IT! 
    deliciousDoughnuts[1].eat(); 

    // Check have you drooped it down or you are good! 
    if(deliciousDoughnuts[1].isEaten()) 
    { 
     // Poor chocolate doughnut... 
    } 
} 

나는 좀 종류의 오늘이야, 나는 당신이 Doughnut 클래스가 가정입니다

+0

그래, 이것에 대해 생각해봤을 때 불린 배열을 만들 수 있을까? – himmerz

+0

@himmerz : 도넛 컬렉션이 필요하다고 생각합니다. – reinierpost

+0

물론, 당신은 아마 도너츠의 배열을 원할 것입니다. –

1

). 클래스에 boolean 멤버를 추가하고 값을 변경할 수있는 함수를 만듭니다.

1

먹을 때 도넛이 사라져야한다면, 정말로 깃발을 넣으시겠습니까 ? 그것은 당신이 단지 을 파괴하기를 원한다고 생각합니다. 그래픽으로 MVS 등을 사용하는 경우 시각화는 관찰자가 처리하고 도넛의 소멸자는 관찰자에게 실종되었음을 알립니다. View 객체 은 그래픽을 처리합니다 (객체가 화면에서 지워지면 ).