在Ubuntu 14.04和以下MCVE上使用GCC:

class TargetInterface
{
public:
   ~TargetInterface();
   //
   DataBuffer retDataBuffer();
   // following methods are all pure virtual
   virtual void delay() = 0;
   // ...
protected:
   DataBuffer dataBuffer;
}

class FlashTarget : public TargetInterface
{
   public:
   void delay() override;
   // ...
}

// globals
TargetInterface * targetInterface;

void main()
{
    targetInterface = new FlashTarget; // <--
    // ...
    // etc.
}
FlashTarget是从TargetInterface派生的,并且targetInterface是在main()中动态分配的。

有没有一种方法可以避免为上述代码动态分配

最佳答案

这将是天真的答案:

void main()
{
    FlashTarget target;
    targetInterface = &target;
}

注意:使用这种方法,必须确保只要使用targettargetInterface就会存在。

10-04 12:33