How to pass a function pointer that points to constructor?

前端 未结 7 1995
陌清茗
陌清茗 2020-11-29 06:45

I\'m working on implementing a reflection mechanism in C++. All objects within my code are a subclass of Object(my own generic type) that contain a static member datum of ty

7条回答
  •  盖世英雄少女心
    2020-11-29 06:45

    You cannot take the address of a constructor (C++98 Standard 12.1/12 Constructors - "12.1-12 Constructors - "The address of a constructor shall not be taken.")

    Your best bet is to have a factory function/method that creates the Object and pass the address of the factory:

    class Object;
    
    class Class{
    public:
       Class(const std::string &n, Object *(*c)()) : name(n), create(c) {};
    protected:
       std::string name;     // Name for subclass
       Object *(*create)();  // Pointer to creation function for subclass
    };
    
    class Object {};
    
    Object* ObjectFactory()
    {
        return new Object;
    }
    
    
    
    int main(int argc, char**argv)
    {
        Class foo( "myFoo", ObjectFactory);
    
        return 0;
    }
    

提交回复
热议问题