Dork's port

[C++] thread invalid use of non-static member function error 본문

Develop

[C++] thread invalid use of non-static member function error

Dork94 2017. 12. 9. 19:28

이번에는 Thread 실행시 어떠한 Class의 멤버 함수를 Thread로 동작시켜 보도록 하겠습니다.


처음에 Thread를 사용할 당시 main()에서 선언된 일반 함수를 실행시키는 것과 같이 아래처럼 Thread의 Parameter를 주었습니다(이때 Wpa2Sniffer Class에 run이라는 Function이 있다고 가정하고 해당 Function의 Parameter 는 void형 입니다).


    Wpa2Sniffer wpa2Sniffer;
    thread t1(wpa2Sniffer.run);

이때 컴파일을 실행하면 invalid use of non-static member function 오류가 나타나게 됩니다.


그래서 아래와 같이 소스코드를 수정하면 정상적으로 동작이 됩니다(참고한 Stackoverflow 사이트에서는 해당 멤버 함수를 static으로 구현하는 것을 권장하였으나, 저는 프로그램 로직상 그렇게 구현하지 않았습니다).



 
    Wpa2Sniffer wpa2Sniffer;
    thread t1(&Wpa2Sniffer::run,&wpa2Sniffer);




참고 : https://stackoverflow.com/questions/41476077/thread-error-invalid-use-of-non-static-member-function

Comments