我正在使用C++/CLI(版本9.0)編寫.NET程序集,並且我想使用PIMPL慣用語以避免將不必要的內容放入公共頭中。不幸的是,當我嘗試着聲明一個類,然後使用一個跟蹤處理它,我得到連接器警告4248:在C++/CLI中使用PIMPL慣用語時出現MSVC++鏈接器警告
警告LNK4248:無法解析typeref令牌(0100000E)爲「MyNamespace.PrivateClass」;圖像可能無法運行
無論我使用CLI類還是本機類作爲實現類,這似乎都是這種情況。
示例代碼如下所示:
namespace MyNamespace
{
ref class PrivateClass; // forward dec
ref class MyPublicClass
{
private:
PrivateClass^ m_Imp;
};
}
爲警告微軟的解釋是不是太翔實,很遺憾。
關於「VS的默認行爲[...]」:我不太明白這一點。程序員必須手動創建`.h`文件和`.cpp`文件(僅包含頭文件的#include),並確保託管類的整個定義進入頭文件。就我所知,VS並沒有自動執行這個約定。 – stakx 2016-05-28 09:54:15