헤더 파일을 변경해야만 변경할 수있는 C++ 코드가 있습니다. 나는 코드를 가지고 그것을 컴파일 할 수있다.C++ 매크로 정의 도트 포함?
문제는 (내가하고 싶은 무슨 종류의 관계가 함수 포인터) 나는이 같은 함수 포인터 정의 뭔가를해야한다는 것입니다 :
는foo.bar();
나는 변화를하고자하는 매크로 나 뭔가 그 :
#define foo.bar() FunCall()
제가 이해하는 한 문제는 매크로에서 도트를 사용할 수 없다는 것입니다. 다른 방법이 있습니까?
편집 :
좀 더 자세한 정보. 내가 얻는 코드는 단일 인스턴스를 실행하기위한 것이지만 클래스에 여러 인스턴스를 실행하기 위해 코드를 래핑하고 있습니다. 그게 내가 끝내려고 노력하고있는 두통을 준다.
내가 노력하고있어 것은 어느 매크로 및 일부 인라인 함수 또는 전체 세 번째 방법 사용하기 :
void class::function()
{
EventFuncTypedef f = foo.bar;
(this->*f)();
}
: 나는 동등 이상으로 할 수있는 몇 가지 코드가 필요
void function()
{
foo.bar();
}
을 또는
void class::function()
{
class::FunCall();
}
위의 코드는 모두 원점에서 실행되는 옵션 1 또는 2를 시도하는 것입니다. 알 코드. 매크로와 도우미와
는 FunCall'로 구현 기능'바()'()'와'struct'을 확인하고 전역 변수'foo'을 만들 수 있습니다. 그러면'foo.bar()'는'FunCall()'에 대한 함수 호출이됩니다. 괜찮습니까? – Mine
점을 없앨 수는 없습니다. 당신은 다소 창의적인 방법으로 만 그것을 사용할 수 있습니다. –
엄격한 것은 불가능합니다. 실제로 이미 존재하는 것입니다. 내가 얻는 코드는 단일 인스턴스로 실행되도록 작성되었으며 여러 인스턴스의 클래스에 전체 코드를 래핑하려고합니다. 그것은 멤버 함수 포인터로 복잡합니다. 나는 새로운 창조적 인 방법으로 그것을 감싸려고 생각하고있다. – ThomasG