C++中能不能把主函数main做为一个类的成员函数? 怎么做啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class yourclass {public: void main() { cout << "hello, main" << endl;}void main(){ yourclass test; test.main();}这样是可以的,你可以给一个成员函数起名为main(),但必须还要有一个主函数main()。 也就是说不能向JAVA那样,把主函数main()作为类的成员了 问题的关键似乎就是:如何在我设计的main函数中,创建一个子类的实例?而我在设计的时候还不知道子类的名字。 C#事这样的!他们的设计结构不一样!C#以Class为单元!C/C++以Fun 为单元! 可以的,你们看到MFC就是这样吗!!!! 用MFC中的 RUNTIME_CLASS 宏 在MFC文档/视结构中,CDocument 类就不知道它的成员 CYourView 是什么类型,但MFC用RUNTIME_CLASS 实现了。 RUNTIME_CLASS 是怎样实现的啊 RUNTIME_CLASS 是怎样实现的啊 其中的宏定义很复杂,我没耐心去搞清楚。我们还是回到原来的问题。你是想要把一个工作分成五个部分,分给五个人去实现,而他们可以使用自已定义的类名,只要从你的基类继承一下,以某个虚函数的方式实现?这简直就是一个标准的COM编程模型。COM中是以纯虚函数实现接口定义的。 我并不能做COM啊,我要求程序在Window上和Unix上都必须是可行的。 只是用COM的编程模型。你可以用一个基类,其中定义五个纯虚函数(不是纯的也无所谓),让别人分别继承,实现其中虚函数。再定义一个静态虚函数,就叫 QueryInterface好了,它返回指向自身的一个新对象实例的指针,你把它赋给一个指向基类的指针就可以用来调用子类的实现了。 抱歉,我又想过了,这样还是得知道子类名。COM机制使用了一个IClassFactory接口从而隐藏了子类名,而我们这样办不到。 effictive C++条款41:区分inheritance 和 templates请重新阅读猫咪的规格,注意其需求是“不同血统的猫有自己一套吃和睡的本领”。这意味着你必须为每一种猫实现不同的行为。你不能只写一个函数就要统辖所有的猫咪,你能做的是为“每一种猫咪都必须实现”的函数设计其接口。啊哈,散播(传递)函数接口的唯一办法就是声明纯虚拟函数(见条款36): 你可以使用CRuntimeClass或者模仿它。MFC的类有一个静态函数CreateObject,可以new self;还有一个CRuntimeClass静态变量,这个静态变量有一个静态指针,指向容器类的CreateObject。由于CRuntimeClass类的第一个成员是容器类的名称,所以你可以有容器类的名称,得到相应的CRuntimeClass对象,再调用CRuntimeClass对象的静态指针函数就可以了。 如果真要用宏来实现,你最好看一下MFC的源代码,我帮不上忙了。 vs2008MFC菜单编辑器和属性对话框从哪可找到 好心人帮忙看看这段程序哪里错了 个人收藏的编程下载资源全部公布 设置对话框背景图片[好方法] 请问如何抓取控制台信息 巨简单,等于送分。 高分紧急求助:有关ACCESS数据库的问题 有没有办法重载多维数组的[]?? 图片A,B淡入淡出效果的源码谁有? 窗口显示与还原问题 哪有VC技术内幕(4)的配书源码下,哪有VC技术内幕(5)中文版下载? (急)const * int 和int const *和const int *和int * const有什么区别?
public:
void main() { cout << "hello, main" << endl;
}void main()
{
yourclass test;
test.main();
}这样是可以的,你可以给一个成员函数起名为main(),但必须还要有一个主函数main()。
我们还是回到原来的问题。
你是想要把一个工作分成五个部分,分给五个人去实现,而他们可以使用自已定义的类名,只要从你的基类继承一下,以某个虚函数的方式实现?
这简直就是一个标准的COM编程模型。
COM中是以纯虚函数实现接口定义的。
再定义一个静态虚函数,就叫 QueryInterface好了,它返回指向自身的一个新对象实例的指针,你把它赋给一个指向基类的指针就可以用来调用子类的实现了。
条款41:区分inheritance 和 templates请重新阅读猫咪的规格,注意其需求是“不同血统的猫有自己一套吃和睡的本领”。这意味着你必须为每一种猫实现不同的行为。你不能只写一个函数就要统辖所有的猫咪,你能做的是为“每一种猫咪都必须实现”的函数设计其接口。啊哈,散播(传递)函数接口的唯一办法就是声明纯虚拟函数(见条款36):
MFC的类有一个静态函数CreateObject,可以new self;还有一个CRuntimeClass静态变量,这个静态变量有一个静态指针,指向容器类的CreateObject。由于CRuntimeClass类的第一个成员是容器类的名称,所以你可以有容器类的名称,得到相应的CRuntimeClass对象,再调用CRuntimeClass对象的静态指针函数就可以了。