아니요.이 기능은 "리플렉션"의 일부로 컴파일 된 이진 파일에 클래스에 대한 정보를 실제로 넣는 Java와 같은 언어에서만 가능합니다.
C++ (일반적으로)는 결과 바이너리에 클래스에 대한 정보를 실제로 저장하지 않습니다. (std::type_info
이 작동하는 데 필요한 몇 비트 제외)
실제로 Java와 C++에서 제공되는 친구가 제공하는 "유형"과 같은 것은 없으므로 메서드에 전달할 수 없습니다. 당신이 그것을 인스턴스화의 목적하는 방법에 유형을 전달하려는 경우
, 당신은 실제로
#include <memory>
struct IMyType
{
virtual ~IMyType();
virtual MyMethod();
};
struct IElementFactory
{
virtual std::auto_ptr<IMyType> GetNewItem() const = 0;
virtual ~IElementFactory();
};
void MyMethodThatAcceptsAType(const IElementFactory& factory)
{
std::auto_ptr<IMyType> instance(factory.GetNewItem());
//Use your instance like normal.
}
이 더 나은 것입니다 (이 너무 Java 및 친구와 함께 작동) 더 나은 방법으로이 작업을 수행 할 수 있습니다 왜냐하면이 코드는 타입 기반의 안전성을 유지하고 반성 기반 코드는 유지하지 않기 때문입니다.
이 유형의 개체로 무엇을 하시겠습니까? –