Нет.Эта функция является частью «отражения» и возможна только в таких языках, как Java, которые фактически помещают информацию о классах в скомпилированный двоичный файл.
C ++ (обычно) вообще не сохраняет никакой информации о классах в результирующемдвоичный файл.(За исключением нескольких битов, необходимых для работы std::type_info
)
На самом деле, нет ничего похожего на «Тип», предоставляемый Java и друзьями, доступными в C ++, и поэтому вы не можете передать его методу.
Если вы хотите передать тип методу с целью его создания, вы можете сделать это лучше (это работает и с Java, и с друзьями)
#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, потому что этот код поддерживает безопасность типов, в то время как код, основанный на отражении, - нет.