C ++에서 인라인 함수를 사용한 상호 포함

EFanZh

이 같은 코드를 작성하려면 : A객체는 클래스 호출 B형 멤버 b의 멤버 함수를 DoSomething, 그리고 클래스 BDoSomeOtherThing멤버 함수는,이 호출 ANotify멤버 함수를. 아래 코드를 참조하십시오.

클래스 A :

class A
{
    B b;

public:
    A() : b(*this)
    {
    }

    void DoSomething()
    {
        b.DoSomething();
    }

    void Notify()
    {
    }
};

클래스 B :

class B
{
    A &a;

public:
    B(A &a) : a(a)
    {
    }

    void DoSomething()
    {
    }

    void DoSomeOtherThing()
    {
        a.Notify();
    }
};

문제는 함수를 인라인으로 유지하고 싶기 때문에 코드가 헤더 파일에 있어야한다는 것입니다. 상호 포함을 유발할 수 있기 때문에 단순히 서로를 포함시킬 수 없으며,이 상황에서 앞으로 선언을 사용할 수 있는지도 모르겠습니다. 소스 파일에 구현을 작성할 수 있지만 인라인 함수는 아닙니다. 그렇다면 코드를 어떻게 작동시킬 수 있습니까?

Celtschk

멤버 함수의 정의를 클래스 정의 외부로 이동하고 클래스 외부 정의에를 명시 적으로 접두사로 지정하여 인라인 (따라서 헤더에)을 유지할 수 있습니다 inline. 당신이 그것을 한 후에, 당신은 알게 될 것입니다

  • 의 클래스 정의는 B의 멤버 함수 정의 앞에 쉽게 이동할 수 있으며 해당 멤버에서 A액세스하는 문제를 해결합니다.B
  • 의 클래스 정의에는 A의 포워드 선언 만 필요 B하므로 문제 class B;A수정하는 정의 앞에 추가 하십시오 .

이 두 가지 변경을 수행하면 문제를 해결할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C에서 함수 포인터를 사용하여 고차 함수 합성 함수 정의 및 호출

분류에서Dev

c-함수 호출에서 함수에서 반환 된 포인터 사용

분류에서Dev

포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

분류에서Dev

포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

분류에서Dev

C ++에서 멤버 함수 포인터를 사용하는 FSM

분류에서Dev

클래스에서 typedef를 사용하여 상위 클래스 함수에 대한 함수 포인터 정의

분류에서Dev

C ++ : 파생 클래스에 대한 포인터를 사용하여 가상 함수 호출에 여전히 vlookup이 있습니다.

분류에서Dev

C ++ 코드에서 사용되는 C 인라인 함수

분류에서Dev

함수 포인터에 대한 일종의 포인터를 반환하는 C #에서 C dll의 함수 호출

분류에서Dev

C ++ 함수 사이에서 MQTT 클라이언트 포인터 사용

분류에서Dev

C에서 void와 함께 함수 포인터 사용

분류에서Dev

C에서 인라인 함수 이름과 함께 일반 함수 사용

분류에서Dev

C ++에서 함수에 대한 인수로 추상 클래스 사용

분류에서Dev

Rust에서 C 함수에 대한 포인터를 받고 다시 호출 할 수 있습니까?

분류에서Dev

C ++에서 내장 함수를 사용하여 상호 계산

분류에서Dev

c에서 인수와 함께 함수 포인터를 어떻게 사용할 수 있습니까?

분류에서Dev

C ++ 함수 호출 누락 된 인수 목록; '& Runner :: runTask'를 사용하여 멤버에 대한 포인터를 만듭니다.

분류에서Dev

오류 1 오류 C3867 : 'Command :: getSecondWord': 함수 호출에 인수 목록이 없습니다. '&'를 사용하여 멤버에 대한 포인터 만들기

분류에서Dev

F #에서 여러 인수를 사용하여 C # 함수 호출

분류에서Dev

다른 cpp 파일에서 C ++ 호출 인라인 함수

분류에서Dev

c에서 함수 포인터의 사용 사례

분류에서Dev

C ++ 함수에서 구조체에 포인터 사용

분류에서Dev

포인터를 사용하여 C의 함수에서 argv 문자열 변경

분류에서Dev

C #에서 둘 이상의 값을 반환하는 함수의 인라인 사용

분류에서Dev

C ++의 함수에 대한 포인터

분류에서Dev

C ++ 11을 사용하여 멤버 함수에 대한 포인터를 인수로 전달

분류에서Dev

배열에 대한 포인터를 반환하는 C 함수를 호출하는 Fortran 인터페이스

분류에서Dev

C의 함수 포인터를 사용한 Bubblesort 알고리즘

분류에서Dev

C의 struct에서 사용되는 함수 포인터

Related 관련 기사

  1. 1

    C에서 함수 포인터를 사용하여 고차 함수 합성 함수 정의 및 호출

  2. 2

    c-함수 호출에서 함수에서 반환 된 포인터 사용

  3. 3

    포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

  4. 4

    포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

  5. 5

    C ++에서 멤버 함수 포인터를 사용하는 FSM

  6. 6

    클래스에서 typedef를 사용하여 상위 클래스 함수에 대한 함수 포인터 정의

  7. 7

    C ++ : 파생 클래스에 대한 포인터를 사용하여 가상 함수 호출에 여전히 vlookup이 있습니다.

  8. 8

    C ++ 코드에서 사용되는 C 인라인 함수

  9. 9

    함수 포인터에 대한 일종의 포인터를 반환하는 C #에서 C dll의 함수 호출

  10. 10

    C ++ 함수 사이에서 MQTT 클라이언트 포인터 사용

  11. 11

    C에서 void와 함께 함수 포인터 사용

  12. 12

    C에서 인라인 함수 이름과 함께 일반 함수 사용

  13. 13

    C ++에서 함수에 대한 인수로 추상 클래스 사용

  14. 14

    Rust에서 C 함수에 대한 포인터를 받고 다시 호출 할 수 있습니까?

  15. 15

    C ++에서 내장 함수를 사용하여 상호 계산

  16. 16

    c에서 인수와 함께 함수 포인터를 어떻게 사용할 수 있습니까?

  17. 17

    C ++ 함수 호출 누락 된 인수 목록; '& Runner :: runTask'를 사용하여 멤버에 대한 포인터를 만듭니다.

  18. 18

    오류 1 오류 C3867 : 'Command :: getSecondWord': 함수 호출에 인수 목록이 없습니다. '&'를 사용하여 멤버에 대한 포인터 만들기

  19. 19

    F #에서 여러 인수를 사용하여 C # 함수 호출

  20. 20

    다른 cpp 파일에서 C ++ 호출 인라인 함수

  21. 21

    c에서 함수 포인터의 사용 사례

  22. 22

    C ++ 함수에서 구조체에 포인터 사용

  23. 23

    포인터를 사용하여 C의 함수에서 argv 문자열 변경

  24. 24

    C #에서 둘 이상의 값을 반환하는 함수의 인라인 사용

  25. 25

    C ++의 함수에 대한 포인터

  26. 26

    C ++ 11을 사용하여 멤버 함수에 대한 포인터를 인수로 전달

  27. 27

    배열에 대한 포인터를 반환하는 C 함수를 호출하는 Fortran 인터페이스

  28. 28

    C의 함수 포인터를 사용한 Bubblesort 알고리즘

  29. 29

    C의 struct에서 사용되는 함수 포인터

뜨겁다태그

보관