부모 클래스 생성자에서 재정의 된 정적 메서드를 참조하는 방법은 무엇입니까?

제자

그래서 우리는 어떤 클래스 (즉, Button)와 void 함수를 취하는 메서드를 가지고 있습니다. 또한 Button 인스턴스에 서명하는 데 사용되는 정적 메서드 buttonAction이있는 부모 클래스 State가 있습니다. 문제는 State의 자식 클래스에 정적 메서드 buttonAction을 재정의하는 옵션이 있어야하며이 메서드는 부모 클래스 State 생성자에 의해 단추에 할당되어야한다는 것입니다.

다음과 같이 작동해야합니다.

암호:

MyState st;
button.click();

원하는 출력 :

MyState::buttonAction!

그러나 대신 나는 얻는다 :

State::buttonAction!

관련 .cpp 파일 :

#include <iostream>
#include <cstdio>

class Button
{
public:
    void setAction(void(*foo)(void));
    void click();
private:
    void(*foo)(void);
};

void Button::setAction(void(*foo)(void)) { this->foo = foo; }

void Button::click() { this->foo(); }

Button button;

class State
{
public:
    State();
private:
    static void buttonAction();
};

State::State()
{
    button.setAction(this->buttonAction); // pointer to state's buttonAction
}

void State::buttonAction()
{
    printf("State::buttonAction!");
};

class MyState : State
{
private:
    static void buttonAction(); // overridden buttonAction 
};

void MyState::buttonAction()
{
    printf("MyState::buttonAction!");
};

int main() {
    MyState st;
    button.click();
    return 0;
}
Sam Varshavchik

MyState의 생성자가 재정의하도록합니다.

MyState::MyState()
{
    button.setAction(&buttonAction)l
}

수퍼 클래스가 처음 setAction()에 콜백을 호출 하여 자체 정적 클래스 함수를 가리키면이를 재정의하고의 정적 클래스 함수를 다시 가리 킵니다 MyState.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ruby에서 클래스 변수를 혼합 모듈의 동적으로 생성 된 클래스 메서드에 전달하는 방법은 무엇입니까?

분류에서Dev

구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

Ruby의 상속 된 부모 메서드에서 자식 클래스를 얻는 방법은 무엇입니까?

분류에서Dev

정적 클래스를 참조하여 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

최종 클래스를 반환하는 정적 메서드를 모의하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 동적 클래스 생성 후 부모 클래스의 __init__ 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

상속 된 클래스에서 필드의 범위를 "재정의"하는 방법은 무엇입니까?

분류에서Dev

자신의 인스턴스를 반환하는 메서드로 별칭이 지정된 클래스를 모의하는 방법은 무엇입니까?

분류에서Dev

속성 값이 부모 클래스에서 재정의되지 않도록 하위 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

Java-정의 된 클래스 내에서 메소드를로드하는 방법은 무엇입니까?

분류에서Dev

Python의 클래스 내에서 정적 속성을 참조하는 방법은 무엇입니까?

분류에서Dev

앞에서 정의한 클래스 X 내부의 코드에서 나중에 정의 된 클래스 Y를 사용하는 방법은 무엇입니까?

분류에서Dev

PHP 부모 함수가있는 경우 자식에서 재정의 된 함수를 참조하는 방법은 무엇입니까?

분류에서Dev

클래스 정적 멤버에서 정적 변수를 참조하는 방법은 무엇입니까?

분류에서Dev

WordPress 플러그인에서 생성자로 클래스를 재정의하는 방법은 무엇입니까?

분류에서Dev

C ++의 상속 된 클래스에서 일반 메서드를 정적 메서드로 변경하는 방법은 무엇입니까?

분류에서Dev

내 CSS의 새 클래스에 정의 된 클래스를 적용하는 방법은 무엇입니까?

분류에서Dev

Java의 하위 클래스에서 메서드를 재정의하지 않는 방법은 무엇입니까?

분류에서Dev

구조체에서 정적 클래스 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

동적으로 생성 된 클래스의 모듈 이름을 설정하는 방법은 무엇입니까?

분류에서Dev

D : 확장 클래스에서 불변 메서드를 재정의하는 방법은 무엇입니까?

분류에서Dev

문자열에서 지정된 클래스의 모든 내용을 얻는 방법은 무엇입니까?

분류에서Dev

serialize 메서드를 재정의하지 않고 특정 클래스에 대해 JsonSerializer의 isEmpty 메서드를 재정의하는 방법은 무엇입니까?

분류에서Dev

PHP에서 특정 클래스에 정의 된 '클래스 상수'와 함께 defined () 메서드를 사용하는 방법은 무엇입니까?

분류에서Dev

부모 클래스에서 메서드를 재정의하는 방법

분류에서Dev

다른 파일의 클래스 외부에서 클래스 생성자를 정의하는 방법은 무엇입니까?

분류에서Dev

Powershell 클래스 내에서 Add-Type으로 추가 된 유형의 정적 메서드를 올바르게 호출하는 방법은 무엇입니까?

분류에서Dev

TypeScript : 생성자없이 클래스에서 내부적으로 정적 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Python 자식의 클래스 멤버를 재정의하고 부모에서 액세스하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Ruby에서 클래스 변수를 혼합 모듈의 동적으로 생성 된 클래스 메서드에 전달하는 방법은 무엇입니까?

  2. 2

    구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

  3. 3

    Ruby의 상속 된 부모 메서드에서 자식 클래스를 얻는 방법은 무엇입니까?

  4. 4

    정적 클래스를 참조하여 메서드를 호출하는 방법은 무엇입니까?

  5. 5

    최종 클래스를 반환하는 정적 메서드를 모의하는 방법은 무엇입니까?

  6. 6

    파이썬에서 동적 클래스 생성 후 부모 클래스의 __init__ 메서드를 호출하는 방법은 무엇입니까?

  7. 7

    상속 된 클래스에서 필드의 범위를 "재정의"하는 방법은 무엇입니까?

  8. 8

    자신의 인스턴스를 반환하는 메서드로 별칭이 지정된 클래스를 모의하는 방법은 무엇입니까?

  9. 9

    속성 값이 부모 클래스에서 재정의되지 않도록 하위 클래스를 만드는 방법은 무엇입니까?

  10. 10

    Java-정의 된 클래스 내에서 메소드를로드하는 방법은 무엇입니까?

  11. 11

    Python의 클래스 내에서 정적 속성을 참조하는 방법은 무엇입니까?

  12. 12

    앞에서 정의한 클래스 X 내부의 코드에서 나중에 정의 된 클래스 Y를 사용하는 방법은 무엇입니까?

  13. 13

    PHP 부모 함수가있는 경우 자식에서 재정의 된 함수를 참조하는 방법은 무엇입니까?

  14. 14

    클래스 정적 멤버에서 정적 변수를 참조하는 방법은 무엇입니까?

  15. 15

    WordPress 플러그인에서 생성자로 클래스를 재정의하는 방법은 무엇입니까?

  16. 16

    C ++의 상속 된 클래스에서 일반 메서드를 정적 메서드로 변경하는 방법은 무엇입니까?

  17. 17

    내 CSS의 새 클래스에 정의 된 클래스를 적용하는 방법은 무엇입니까?

  18. 18

    Java의 하위 클래스에서 메서드를 재정의하지 않는 방법은 무엇입니까?

  19. 19

    구조체에서 정적 클래스 메서드를 호출하는 방법은 무엇입니까?

  20. 20

    동적으로 생성 된 클래스의 모듈 이름을 설정하는 방법은 무엇입니까?

  21. 21

    D : 확장 클래스에서 불변 메서드를 재정의하는 방법은 무엇입니까?

  22. 22

    문자열에서 지정된 클래스의 모든 내용을 얻는 방법은 무엇입니까?

  23. 23

    serialize 메서드를 재정의하지 않고 특정 클래스에 대해 JsonSerializer의 isEmpty 메서드를 재정의하는 방법은 무엇입니까?

  24. 24

    PHP에서 특정 클래스에 정의 된 '클래스 상수'와 함께 defined () 메서드를 사용하는 방법은 무엇입니까?

  25. 25

    부모 클래스에서 메서드를 재정의하는 방법

  26. 26

    다른 파일의 클래스 외부에서 클래스 생성자를 정의하는 방법은 무엇입니까?

  27. 27

    Powershell 클래스 내에서 Add-Type으로 추가 된 유형의 정적 메서드를 올바르게 호출하는 방법은 무엇입니까?

  28. 28

    TypeScript : 생성자없이 클래스에서 내부적으로 정적 함수를 호출하는 방법은 무엇입니까?

  29. 29

    Python 자식의 클래스 멤버를 재정의하고 부모에서 액세스하는 방법은 무엇입니까?

뜨겁다태그

보관