이것은 내 문제에 대한 최상의 해결책이 아니므로 원하는 것을 설명 할 것입니다.클래스의 멤버 함수를 포인터로 전달
다른 클래스 (자바를 보는 인터페이스)의 일반 버전 인 함수를 만들고 싶습니다. 그리고 나서 각 클래스의 특성화를 만듭니다.
나중에 일반 클래스의 벡터를 만들고 싶지만 벡터의 각 멤버는 reallity에 각 특수 클래스의 캐스팅 된 멤버가 있습니다. 그래서 벡터에서 각 클래스의 함수를 호출하면 다른 함수를 호출합니다.
나는 inherence 만 사용하여이 작업을 수행했지만, 벡터의 기능을 호출 할 때는 전문화가 아니라 아버지의 구현을 호출합니다.
올바른 기능을 호출하기 위해 벡터의 각 구성원을 캐스팅하지 않으려 고합니다. 코드의 문제를 일반화하기위한 것이기 때문에 저는 이것을 사용하지 않습니다. 나는 역동적 인 행동을 취하는 것을 의미합니다.
또한 포인터를 사용하여 tryied 했으므로 특수 클래스는이 함수를 호출 할 함수 포인터에 할당합니다. 그러나 포인터가 namespace::classgeneralization::(int)(*f)();
이고 가리 키려는 기능이 namespace::classgeneralization::classspecialization::int f()();
이므로 컴파일되지 않으므로 허용되지 않았습니다.
나는 클래스에서 함수를 구현 한 다음 클래스에서 그 함수를 가리킬 수도 있지만, 이것은 실제로 생각할 수있는 코드입니다. 또한 lamda 함수에 대한 포인터를 사용할 수 있는지 알아보기 위해 노력했지만 적어도 VS2010에서 연구 할 수는 없습니다.
어쩌면 문제를 해결하기위한 구멍의 관점이 잘못되었을 수 있으며, 내가 시도하는 것처럼 제대로 제대로 수행 할 수있는 방법이 없을 수도 있습니다. 어쨌든 나는 다른 시각에 개방되어 있으므로, 각 요소가 다른 구현 클래스와 다른 클래스 인 벡터의 클래스를 구현하는 것은 오래 전부터였다.
당신의 설명을 읽고, 당신이 (http://stackoverflow.com/questions/274626/ 약 [객체 슬라이스]를 읽을해야한다고 생각 문제는 무엇인지 - 문제 -에 - c). –
또한 ['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function)에 대한 정보가 유용 할 수 있습니다. VS2010에서 완전히 지원되는지 확신 할 수 없지만. –
나는 왜 질문이 다운 그레이드되었는지 알고 싶습니다. 만약 내가 가난한 영어 때문에 유감 스럽지만 원어민 영어가 아닌 사람들에게 부당하다고 느낀다. – user223506