C++ 模拟MFC动态基础的机理
当我学习MFC时,我想模仿一些机制,在这里,我只想模仿MFC的动态机制来创建简单的对象。你能指出哪里是错误,以及如何完成它吗。谢谢你C++ 模拟MFC动态基础的机理,c++,windows,mfc,C++,Windows,Mfc,当我学习MFC时,我想模仿一些机制,在这里,我只想模仿MFC的动态机制来创建简单的对象。你能指出哪里是错误,以及如何完成它吗。谢谢你 class Object; struct classRuntime { Object* pBasedClass; Object* pNextClass; char* className; Object* CreateClass(); }; class Object { public: static struct clas
class Object;
struct classRuntime
{
Object* pBasedClass;
Object* pNextClass;
char* className;
Object* CreateClass();
};
class Object
{
public:
static struct classRuntime ObjectClassRuntime;
Object() {
cout<<"Object constructor"<<endl;
}
static Object* CreateObject() {
return new Object;
}
};
classRuntime Object::ObjectClassRuntime = {NULL, NULL, "Object",
Object::CreateObject};
类对象;
结构类运行时
{
对象*pBasedClass;
对象*pNextClass;
char*className;
对象*CreateClass();
};
类对象
{
公众:
静态结构类运行时ObjectClassRuntime;
对象(){
你可能有什么问题?什么错误?什么不起作用?有很多错误..这只是我的想法..我不知道如何组织它们..然后向我们展示错误或一个完整的例子来重现你的问题。你应该编写&Object::CreateObject
。VC++不像其他编译器那样严格,有时会崩溃查看缺少的&
@MSalters:根据您的建议,它将显示错误C2078:初始化者太多。我的平台是VC6.0…谢谢..谢谢您的帮助…在我的书中,有'Object*CreateObject();'not'Object*(*CreateObject)()“你能解释一下吗?这是一个错误吗?我用图片更新了这个问题。。不是错误,只是命名上的不同。你的例子有CObject*(PASCAL*m_pfnCreateObject)
。PASCAL
是16位窗口的保留(你可以放心地忽略它),m_pfn
是“成员,指向函数的指针”。否则是一样的。CRuntimeClass上有CObject*(PASCAL*m_pfnCreateObject());它类似于我的Object*(*CreateObject)()声明。我猜CRuntimeClass::CreateObject实现只是对m_pfnCreateObject的调用
class Object;
struct ClassRuntime {
Object* basedClass;
Object* nextClass;
char* className;
Object* (*instanceFactory)();
};
class Object
{
public:
static const ClassRuntime ObjectClassRuntime;
Object() {}
static Object* CreateInstance() { return new Object; }
};
const ClassRuntime Object::ObjectClassRuntime = {NULL, NULL, "Object", Object::CreateInstance};
class Toto : public Object
{
public:
static const ClassRuntime TotoClassRuntime;
Toto() {}
static Object* CreateInstance() { return new Toto; }
};
const ClassRuntime Toto::TotoClassRuntime = {NULL, NULL, "Toto", Toto::CreateInstance};