我有一个类重写了默认的空构造函数,为构造函数提供了一个参数。如果我在这个类中使用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