Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模拟MFC动态基础的机理_C++_Windows_Mfc - Fatal编程技术网

C++ 模拟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

当我学习MFC时,我想模仿一些机制,在这里,我只想模仿MFC的动态机制来创建简单的对象。你能指出哪里是错误,以及如何完成它吗。谢谢你

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};