Is it possible to give a definition of a class in C++ during allocation, as is allowed in java

后端 未结 4 1819
无人及你
无人及你 2021-01-18 07:03

Or simply put

can I do some thing like

class A {
public:
  virtual void foo() = 0;
};

class B {
  public:
    A *a;
    b(){
       a = new A() { vo         


        
4条回答
  •  庸人自扰
    2021-01-18 07:49

    No. Everything in C++ has to be defined before it can be used. In your case, since you want to override A::foo(), you have to derive a new class, and then B can instantiate that class, eg:

    class A
    { 
    public: 
      virtual void foo() = 0; 
    }; 
    
    class A1 : public A
    {
    public:
      void foo() { printf("hello"); }
    }; 
    
    class B
    { 
    public: 
      A *a; 
      B()
      { 
        a = new A1(); 
      } 
    };
    

提交回复
热议问题