벡터 목록에서 멤버 함수 포인터 호출

bMathew

저는 함수 포인터를 처음 접했고 메인 클래스가 Test 클래스를 사용하여 멤버 함수 포인터로 목록을 채우는 작은 프로그램을 작성했습니다. 그리고 내 메인 클래스에서 ExeFuns ()를 호출하여 각 멤버 함수를 호출하고 싶습니다. 어떻게해야할지 모르겠습니다. 어떤 도움이라도 대단히 감사합니다. 감사.

Test.h

Class Test{
  public : 
   void CallFun1(); 
   void CallFun2();

   void AddFuns(); 
   void ExeFuns();      
}; 

Test.cpp

std::vector<void (Test::*) ()> callist; 


void Test::AddFuns(){
  callist.push_back(&Test::CallFun1); 
  callist.push_back(&Test::CallFun2); 
}


void Test::ExeFuns(){
  for (int i = 0 ; i<eventlist.size(); i++)
  {
   callist[i](); // error!
  }
}

void Test::CallFun1(){ cout<<"Fun 1"<<endl; }
void Test::CallFun2(){ cout<<"Fun 2"<<endl; }

Main.cpp

main()
{
Test obj; 
obj.AddFuns(); 
obj.ExeFuns(); 
}
아룬

간단히 말해서 멤버 메서드를 호출하려면. * 또는-> 연산자가 필요합니다. 또한 코드에 여러 컴파일 오류와 하나의 범위를 벗어난 액세스가 있습니다. 다음은 올바른 접근 방식입니다.

void Test::ExeFuns(){
  for (int i = 0 ; i<callist.size(); i++) // also there is out of bounds access (usage of <=) in your code
  {
    (this->*callist[i])(); // or (*this.*callist[i])();
  }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

멤버 포인터 함수 호출 C ++

분류에서Dev

함수 호출에 대한 포인터 대 멤버 함수 호출에 대한 포인터

분류에서Dev

상수 멤버 함수에서 상수가 아닌 멤버 함수 포인터 호출

분류에서Dev

멤버 함수에 대한 포인터로 구성된 벡터

분류에서Dev

멤버 함수에 의해 반환 된 벡터에서 시작 및 끝 호출

분류에서Dev

클래스의 멤버 인 벡터에서 sort () 호출 "swap () 호출과 일치하는 함수 없음"

분류에서Dev

포인터 벡터에서 함수 호출

분류에서Dev

공유 포인터의 벡터 인 'push_back'에 대한 일치하는 멤버 함수 호출이 없습니다.

분류에서Dev

여러 포인터를 통해 멤버 함수 호출

분류에서Dev

참조 된 벡터 Throwing Error의 멤버 함수 (크기) 호출

분류에서Dev

상속 된 벡터 요소의 멤버 함수 호출

분류에서Dev

VC ++에서 클래스 A 함수 포인터를 통해 클래스 멤버 함수 (클래스 B) 호출

분류에서Dev

멤버 함수에 대한 포인터

분류에서Dev

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

분류에서Dev

클래스 정의 내에서 포인터 멤버 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

객체의 shared_ptr 벡터에 대한 객체없이 멤버 함수를 호출 할 수 없습니다.

분류에서Dev

인수 벡터를 병렬로 사용하여 요소 벡터의 멤버 함수 호출

분류에서Dev

호출 할 일치 함수 없음 : 오류 : 'f (...)'에서 멤버 포인터 함수를 호출하려면 '. *'또는 '-> *'를 사용해야합니다. 예 : '(...-> * f) ( ...) '

분류에서Dev

클래스 멤버 자체 인 포인터를 통해 멤버 함수를 호출하는 방법

분류에서Dev

함수 포인터가 아닌 멤버 함수에 대한 C ++ 포인터

분류에서Dev

클래스의 멤버 함수에 대한 함수 포인터

분류에서Dev

const 멤버 함수에서 클래스 멤버에 대한 포인터 반환

분류에서Dev

정적 멤버로서 멤버 변수에 대한 포인터

분류에서Dev

멤버 함수에서 문자열 포인터 반환

분류에서Dev

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

분류에서Dev

C ++에서 포인터 멤버 변수의 생성을 호출하는 방법은 무엇입니까?

분류에서Dev

C ++에서 포인터 멤버 변수의 생성을 호출하는 방법은 무엇입니까?

분류에서Dev

R 함수에 대한 목록에서 벡터 추출

Related 관련 기사

  1. 1

    멤버 포인터 함수 호출 C ++

  2. 2

    함수 호출에 대한 포인터 대 멤버 함수 호출에 대한 포인터

  3. 3

    상수 멤버 함수에서 상수가 아닌 멤버 함수 포인터 호출

  4. 4

    멤버 함수에 대한 포인터로 구성된 벡터

  5. 5

    멤버 함수에 의해 반환 된 벡터에서 시작 및 끝 호출

  6. 6

    클래스의 멤버 인 벡터에서 sort () 호출 "swap () 호출과 일치하는 함수 없음"

  7. 7

    포인터 벡터에서 함수 호출

  8. 8

    공유 포인터의 벡터 인 'push_back'에 대한 일치하는 멤버 함수 호출이 없습니다.

  9. 9

    여러 포인터를 통해 멤버 함수 호출

  10. 10

    참조 된 벡터 Throwing Error의 멤버 함수 (크기) 호출

  11. 11

    상속 된 벡터 요소의 멤버 함수 호출

  12. 12

    VC ++에서 클래스 A 함수 포인터를 통해 클래스 멤버 함수 (클래스 B) 호출

  13. 13

    멤버 함수에 대한 포인터

  14. 14

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

  15. 15

    클래스 정의 내에서 포인터 멤버 함수를 호출하는 방법은 무엇입니까?

  16. 16

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

  17. 17

    객체의 shared_ptr 벡터에 대한 객체없이 멤버 함수를 호출 할 수 없습니다.

  18. 18

    인수 벡터를 병렬로 사용하여 요소 벡터의 멤버 함수 호출

  19. 19

    호출 할 일치 함수 없음 : 오류 : 'f (...)'에서 멤버 포인터 함수를 호출하려면 '. *'또는 '-> *'를 사용해야합니다. 예 : '(...-> * f) ( ...) '

  20. 20

    클래스 멤버 자체 인 포인터를 통해 멤버 함수를 호출하는 방법

  21. 21

    함수 포인터가 아닌 멤버 함수에 대한 C ++ 포인터

  22. 22

    클래스의 멤버 함수에 대한 함수 포인터

  23. 23

    const 멤버 함수에서 클래스 멤버에 대한 포인터 반환

  24. 24

    정적 멤버로서 멤버 변수에 대한 포인터

  25. 25

    멤버 함수에서 문자열 포인터 반환

  26. 26

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

  27. 27

    C ++에서 포인터 멤버 변수의 생성을 호출하는 방법은 무엇입니까?

  28. 28

    C ++에서 포인터 멤버 변수의 생성을 호출하는 방법은 무엇입니까?

  29. 29

    R 함수에 대한 목록에서 벡터 추출

뜨겁다태그

보관