대학과제로 디자인패턴 공부중인데 싱글톤 패턴 공부하다가 코드 직접 짜보는데
class에서 정적멤버변수로 객체를 만들어 받고 그걸 리턴하는 함수까진 만듬 근데 메인함수에서 받자니 기본생성자는 이미 막아뒀고 복사 생성자를 막으면 리턴한 함수의 값을 받을 수는 있는데 그러면 그걸로 다른 객체도 만들 수 있어서 싱글톤이 아니게 되어버림
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
class characterControl {
private:
static characterControl *useCharacter; // 정적 멤버 변수로 객체 저장공간 생성
characterControl() { cout << "생성이 불가능 합니다." << endl; } // 기본생성자 사용 불가능하게 막기
int x = 0, y = 0;
public:
static characterControl getControl() {
return *useCharacter;
}
void characterMove(int x, int y) {
this->x += x;
this->y += y;
}
void show() {
cout << "현재 플레이어의 위치 x : " << x << ", y : " << y << endl;
}
~characterControl() { delete useCharacter; }
};
characterControl *characterControl::useCharacter = new characterControl(); // new로 객체 생성후 정적멤버변수에 저장
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
메인 함수에서
characterControl myCharacter = characterControl::getControl();
이런식으로 생성하려 했는데 이러면 이름만 바꿔서 다른 객체도 만들 수 있더라고
객체 하나만 만들려면 어떻게 하는지 몰라서 글올려봄..