我有一個類重寫了默認的空構造函數,爲構造函數提供了一個參數。如果我在這個類中使用mfc IMPLEMENT_DYNAMIC宏,我得到錯誤:沒有合適的默認構造函數可用。通過添加一個空的構造函數很容易解決,但我想知道爲什麼需要這樣做。我不得不做這個保護,並添加一個assert(false)給它,以確保沒有人使用它。爲什麼IMPLEMENT_DYNAMIC需要一個空構造函數?
0
A
回答
0
僅當您不聲明自己的構造函數時,C++纔會提供默認的無參構造函數。我認爲DECLARE_DYNAMIC需要一個無參數的構造函數。
2
下面編譯並在Visual Studio 2008下運行。您使用的是哪個版本的Visual Studio?你可以嘗試編譯這段代碼併發布錯誤消息嗎?你可以看看afx.h
併發布DECLARE_DYNAMIC
和IMPLEMENT_DYNAMIC
(以及其他相關的宏如IMPLEMENT_RUNTIMECLASS
)的定義嗎?
#include <afx.h>
struct CAge : CObject
{
CAge(int n) {}
DECLARE_DYNAMIC(CAge)
};
IMPLEMENT_DYNAMIC(CAge, CObject)
int main()
{
CAge a(10);
}
+0
啊,我看看那是如何工作的。 – 2009-09-18 07:55:04
相關問題
- 1. Java實體 - 爲什麼我需要一個空構造函數?
- 2. 爲什麼JAVA需要構造函數?
- 3. 爲什麼我們需要一個私有構造函數?
- 4. 爲什麼BroadcastReceiver需要一個默認構造函數?
- 5. 爲什麼我們需要一個構造函數?
- 6. 爲什麼我們需要一個私人構造函數?
- 7. 爲什麼我們需要JPA中的空構造函數。 ??
- 8. 爲什麼類擴展intentservice需要空的構造函數?
- 9. 爲什麼在使用構造函數時需要分配一個空值? Java
- 10. 爲什麼構造函數中需要apply()函數
- 11. 爲什麼你需要使用多個構造函數?
- 12. 爲什麼需要這個複製構造函數
- 13. 我們什麼時候需要一個默認構造函數?
- 14. 爲什麼基類有一個需要0個參數的構造函數?
- 15. 瞭解爲什麼構造函數需要參數?
- 16. 爲什麼EnumMap構造函數需要類參數?
- 17. 爲什麼它需要一個參數模擬抽象類的構造函數
- 18. 爲什麼需要迭代器的構造函數需要元素爲EmplaceConstructible?
- 19. 爲什麼派生的構造函數需要基礎析構函數?
- 20. 爲什麼範圍-V3產量需要默認構造函數
- 21. 爲什麼new()約束需要公共構造函數?
- 22. 爲什麼複製構造函數需要是const?
- 23. 爲什麼構造函數需要在課後準確命名?
- 24. 嵌套構造函數。爲什麼需要?
- 25. 爲什麼hibernate需要java.lang.Double的默認構造函數?
- 26. 爲什麼@RequestBody不需要arg構造函數?
- 27. 爲什麼我們需要OOP中的構造函數?
- 28. 爲什麼ServletContextAttributeListener需要默認構造函數?
- 29. C++構造函數重載 - 爲什麼說我需要括號?
- 30. 爲什麼派生類需要使用基類構造函數
也許我的問題不是很好。我明白,DECLARE_DYNAMIC需要一個無參數構造函數,我在問爲什麼是這種情況。 – Jon 2009-09-18 20:40:36