怎么做啊?

解决方案 »

  1.   

    class yourclass {
    public:
      void main() { cout << "hello, main" << endl;
    }void main()
    {  
      yourclass test;
      test.main();
    }这样是可以的,你可以给一个成员函数起名为main(),但必须还要有一个主函数main()。
      

  2.   

    也就是说不能向JAVA那样,把主函数main()作为类的成员了
      

  3.   

    问题的关键似乎就是:如何在我设计的main函数中,创建一个子类的实例?而我在设计的时候还不知道子类的名字。
      

  4.   

    C#事这样的!他们的设计结构不一样!C#以Class为单元!C/C++以Fun 为单元!
      

  5.   

    可以的,你们看到MFC就是这样吗!!!!
      

  6.   

    用MFC中的 RUNTIME_CLASS 宏
      

  7.   

    在MFC文档/视结构中,CDocument 类就不知道它的成员 CYourView 是什么类型,但MFC用RUNTIME_CLASS 实现了。
      

  8.   

    RUNTIME_CLASS 是怎样实现的啊
      

  9.   

    RUNTIME_CLASS 是怎样实现的啊
      

  10.   

    其中的宏定义很复杂,我没耐心去搞清楚。
    我们还是回到原来的问题。
    你是想要把一个工作分成五个部分,分给五个人去实现,而他们可以使用自已定义的类名,只要从你的基类继承一下,以某个虚函数的方式实现?
    这简直就是一个标准的COM编程模型。
    COM中是以纯虚函数实现接口定义的。
      

  11.   

    我并不能做COM啊,我要求程序在Window上和Unix上都必须是可行的。
      

  12.   

    只是用COM的编程模型。你可以用一个基类,其中定义五个纯虚函数(不是纯的也无所谓),让别人分别继承,实现其中虚函数。
    再定义一个静态虚函数,就叫 QueryInterface好了,它返回指向自身的一个新对象实例的指针,你把它赋给一个指向基类的指针就可以用来调用子类的实现了。
      

  13.   

    抱歉,我又想过了,这样还是得知道子类名。COM机制使用了一个IClassFactory接口从而隐藏了子类名,而我们这样办不到。
      

  14.   

    effictive C++
    条款41:区分inheritance 和 templates请重新阅读猫咪的规格,注意其需求是“不同血统的猫有自己一套吃和睡的本领”。这意味着你必须为每一种猫实现不同的行为。你不能只写一个函数就要统辖所有的猫咪,你能做的是为“每一种猫咪都必须实现”的函数设计其接口。啊哈,散播(传递)函数接口的唯一办法就是声明纯虚拟函数(见条款36):
      

  15.   

    你可以使用CRuntimeClass或者模仿它。
    MFC的类有一个静态函数CreateObject,可以new self;还有一个CRuntimeClass静态变量,这个静态变量有一个静态指针,指向容器类的CreateObject。由于CRuntimeClass类的第一个成员是容器类的名称,所以你可以有容器类的名称,得到相应的CRuntimeClass对象,再调用CRuntimeClass对象的静态指针函数就可以了。
      

  16.   

    如果真要用宏来实现,你最好看一下MFC的源代码,我帮不上忙了。