C++11 未定义符号:从虚拟函数返回共享ptr时typeinfo错误

C++11 未定义符号:从虚拟函数返回共享ptr时typeinfo错误,c++11,c++14,c++17,smart-pointers,virtual-functions,C++11,C++14,C++17,Smart Pointers,Virtual Functions,ld.lld:错误:未定义符号:类型信息 为什么以下代码会出现此错误 base::getABC从不直接调用。如果我删除虚拟析构函数的定义,我会得到一个错误 class Base { public: virtual const std::shared_ptr<ABC> getABC() noexcept { return nullptr; } virtual ~Base() { } }; class derived: public base { const

ld.lld:错误:未定义符号:类型信息

为什么以下代码会出现此错误

base::getABC
从不直接调用。如果我删除虚拟析构函数的定义,我会得到一个错误

class Base {
public:
 virtual const std::shared_ptr<ABC>  getABC() noexcept {
    return nullptr;
  }

  virtual ~Base() {
  }
};

class derived: public base {
 const std::shared_ptr<ABC> getABC() noexcept override {
   return abc_;
  }
};
类基{
公众:
虚拟常量std::shared_ptr getABC()noexcept{
返回空ptr;
}
虚拟~Base(){
}
};
派生类:公共基{
const std::shared_ptr getABC()无异常覆盖{
返回abc;
}
};

在我收到此警告的地方,正在使用派生类原始指针。我无法更改该用法。

您的代码片段中没有明显的内容,并且没有足够的代码来重现您的错误: