제목을 유감스럽게 생각합니다. 나는 문제가있는 것 같다. 나는 초심자이고 이것이 전에 물어 본다면 미안하다. 나는 이것에 대해 솔직한 대답을 찾을 수 없었다. (내가 클래스, 포인터와 자식을 검색 할 때 부모 나 자식 포인터를 전달하는 것에 대한 결과를 얻습니다. 자식 포인터 나 부모 포인터를 전달하고 싶지 않습니다. 자식 클래스에 초기화 된 포인터를 전달하려고합니다. 부모에게). 여기서 내가하려고하는 것은 코드로 더 잘 설명됩니다.C++ 부모 클래스에서 포인터 변수를 자식 클래스로 설정하고 부모 클래스에서 사용
class App
{
public:
virtual void init(void) { window = &BasicWindow(); }
virtual void createWindow(void) { window->create(); }
protected:
Window *window;
};
class Game : public App
{
public:
virtual void init(void) { window = &OpenGLWindow(); }
};
int main()
{
App *game = &Game();
game->init();
game->createWindow();
return 0;
}
이것은 합법적입니까? BasicWindow와 OpenGLWindow가 파생되는 추상 Window 클래스가 있습니다. 그러나 창을 만들 때 함수 내에서 window->create()
에 깨는 오류 Access violation reading location
이 발생합니다.
감사
Omg, 나는 지금 매우 어리 석다. 고마워요! 나는 단지 하나의 창만 필요하기 때문에 클래스의 '새로운'인스턴스를 만들 필요가 없다고 생각했습니다. 하지만 '범위에서 한 번 사용'하는 부분을 오해 한 것 같습니다. – Nique
@Nique, C++을 배우는 길고 힘든 길에서 우리 모두가 비슷한 실수를 범했다고 확신합니다. :) – Nim