c++ 클래스 멤버함수를 c언어로 작성된 함수 인자로 넘기는 방법이.
글쓴이: coathanger / 작성시간: 목, 2008/04/10 - 3:31오후
안녕하세요...
현재 C와 C++을 혼용하여 작업 중입니다.
C++어느 한 클래스 내의 멤버함수를 C로 작성된 함수의 함수포인터 인자로 전달이 가능한가요?
대략 이렇습니다.
아래 처럼 A클래스 내에 A()라는 클래스 멤버 함수를 C언어로 작성된 GetFunc()의 인자로 넘기려면 어떻게 해야 하나요?
class A :
{
public :
void A()
{
}
}
void GetFunc( (*cPlusFunc)() )
{
cPlusFunc();
}
Forums:
불가능한 걸로 알고
불가능한 걸로 알고 있습니다.
C++의 멤버함수는 (파이썬에서는 명시적인것에 반해) 실제로 보이는 인자들외에 'this'포인터를 인자로 넘겨주도록 되어있는데, C에서는 이러한 것이 불가능하니까요.
비정적 멤버함수 대신에 static 멤버함수를 쓰고, 이 인자로 this를 대신할 객체의 포인터를 넘기는 방식으로 구현해야 할 것같습니다.
그리고 참고로 적자면, class A는 void A()같은 멤버함수를 가질 수 없습니다.
클래스 이름과 같은 이름의 함수는 생성자인데, 생성자는 반환값을 갖지 않으니까요.
댓글 달기