我有下面的類(非真名):默認nullptr指針類構造函數得到解析外部符號C++
class CObject1 : public IObject1
{
public:
CObject1(IObject2 *pIObject2 = nullptr);
}
其中「I」版本的接口類。現在,當我創建CObject1的實例爲:
CObject1 object1;
我得到一個未解決的外部符號,抱怨CObject1(無效)未找到。如果我嘗試顯式聲明另一個構造函數爲:
CObject1()
我那麼顯然得到了「指定多個默認構造函數」的警告,正如人們所期望的那樣。
爲什麼程序找不到我的默認ctor?
在此先感謝。
編輯: 其他注意事項:
- 接口本身不具有構造函數明確定義。
- 所有這些都在相同的命名空間下。即接口定義,實現和實例化。
- 我在MS單元測試中看到了這個。我沒有一個可以測試的「正常」項目。
那麼,其中*是你的構造函數的實現嗎?另外,請注意,您的定義適用於需要參數的構造函數。調用者負責填充該參數。有沒有可能你有代碼的地方實際上預計會有一個默認的ctor? – kfsone
無法用clang再現http://coliru.stacked-crooked.com/a/8f593e56ee403f20,gcc http://coliru.stacked-crooked.com/a/866ce558d29ee66e或msvc http://rextester.com/ODLZ30170 – kfsone
該實現在其cpp文件中。真的沒什麼特別的。 – ThermoX