我有3個類構建一個繼承鏈。其中兩個類是純粹的抽象類(IProxy和IDataProxy),第三個類真的「做這個工作」(DataProxy)。這些類下面(僅示出了這裏CON /析構函數):帶繼承析構函數的警告C4710(非內聯)
IProxy:
class __declspec(dllexport) IProxy
{
public:
IProxy() {}
virtual ~IProxy() {}
};
IDataProxy:
class __declspec(dllexport) IDataProxy : public IProxy
{
public:
IDataProxy() {}
virtual ~IDataProxy() {}
};
DataProxy部首:
class __declspec(dllexport) DataProxy : public IDataProxy
{
public:
DataProxy();
virtual ~DataProxy() {}
};
DataProxy執行文件:
DataProxy::DataProxy() : m_operationType(eUnknown)
{}
當我編譯的類DataProxy與Microsoft C++編譯器(版本12.00.8804)我得到以下警告:
warning C4710: function 'virtual __thiscall IDataProxy::~IDataProxy(void)' not inlined
warning C4710: function 'virtual __thiscall IDataProxy::~IDataProxy(void)' not inlined
warning C4710: function 'virtual __thiscall DataProxy::~DataProxy(void)' not inlined
warning C4710: function 'virtual __thiscall DataProxy::~DataProxy(void)' not inlined
我真的不知道這些警告從COM。我從來沒有告訴編譯器內聯任何東西。我不知道如何擺脫這些警告。
任何人都可以對這些警告有所瞭解嗎?非常感謝!
最好的問候, 奧利弗
IDataProxy是一個純粹的抽象類,應該定義一個接口。我真的不想要一個純粹的抽象類的cpp文件,是嗎? 爲什麼警告不會爲IProxy類發生? – Baldewin 2011-03-07 12:58:06
'IProxy ::〜IProxy'什麼都不做。 'IDataProxy ::〜IDataProxy'調用'IProxy ::〜IProxy',這是一個DLL導出,因此不能被優化。 – MSalters 2011-03-07 15:42:14
那麼你爲什麼要聲明DLL導出,當它包含的是兩個內聯函數?如果你想讓它們在DLL中,那麼必須合理地存在一些.cpp文件。 – 2011-03-07 16:10:09