📄 subject_27656.htm
字号:
<p>
序号:27656 发表者:loverain 发表日期:2003-01-14 11:31:12
<br>主题:请各位帮帮忙!!!
<br>内容:class father<BR>{<BR> virtual char* CvgGetName() = 0; <BR> static father * CreateObj();<BR>};<BR>class son : public father<BR>{<BR>public:<BR> int *handle;<BR>};<BR>son::son()<BR>{handle = new int;}为什么如此father::CreateObj()<BR> { father *p = new son;<BR><BR> }<BR>这样总是不对??总是在执行时提示:warn-> base class not iniatialized<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:mr_oydy 回复日期:2003-01-14 11:52:19
<br>内容:class son; // forward declaration<BR><BR>class father<BR>{<BR> virtual char* CvgGetName() = 0; <BR>public:<BR> static father * CreateObj();<BR>};<BR><BR>class son : public father<BR>{<BR>public:<BR> int *handle;<BR>};<BR>son::son(){handle = new int;}<BR><BR>farther* father::CreateObj(){ <BR>father *p = new son;<BR> return p;<BR>}<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:晚风也渡 回复日期:2003-01-14 12:08:37
<br>内容:father::CreateObj()<BR> { <BR> father *p = new son;<BR> }<BR>这样是不对的,因为你的CreateObj函数在声明的时候是带有<BR>father*返回值的,该函数应该有返回值<BR>father *father::CreateObj()<BR> { <BR> father *p = new son;<BR> return p;<BR> }<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-01-14 12:27:44
<br>内容:father中纯虚函数应该在子类son中重载并实现。<BR>virtual char* CvgGetName() = 0;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:flowingsky 回复日期:2003-01-14 14:41:17
<br>内容:错误1,father::CreateObj()中没能返回值,<BR>错误2,son的构造函数没有声明,<BR>错误3,son没有重载并实现CvgGetName();
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:loverain 回复日期:2003-01-14 19:15:44
<br>内容:class father<BR>{<BR> static father * CreateObj();<BR>};<BR>不好意思,问题如下:谢谢以上各位的热心帮忙!麻烦再看一下!!<BR>class son : public father<BR>{<BR>public:<BR> int *handle;<BR>};<BR>son::son()<BR>{handle = new int;}为什么如此father * father::CreateObj()<BR> { father *p = new son;<BR> return p;<BR><BR> }<BR>这样总是不对??总是在执行时提示:warn-> base class not iniatialized<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:晚风也渡 回复日期:2003-01-14 19:35:29
<br>内容:你的son类的构造函数没有声明<BR>而且该警告是说你的father类没有初始化,也就是没有构造函数,不过没有构造函数是可以的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:loverain 回复日期:2003-01-14 19:58:00
<br>内容:那是怎么回事??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:晚风也渡 回复日期:2003-01-14 20:13:32
<br>内容:警告没有关系的!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:loverain 回复日期:2003-01-14 20:34:22
<br>内容:不是的,出了警告之后程序根本无法继续运行下去了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-01-14 20:37:33
<br>内容:class father<BR>{<BR> static father * CreateObj();<BR>};<BR><BR>class son : public father<BR>{<BR>public:<BR> int *handle;<BR>};<BR>son::son()<BR>{handle = new int;}<BR><BR>father 与 son的构造函数都是私有的,恐怕不行。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-01-14 20:46:56
<br>内容:如下代码没出现你说的错误:<BR>#include <iostream.h><BR>class father<BR>{<BR>public:<BR> static father * CreateObj();<BR>};<BR><BR>class son : public father<BR>{<BR>public:<BR> son() {handle = new int;};<BR> ~son() {delete handle;};<BR>//protected:<BR> int *handle;<BR>};<BR>father * father::CreateObj()<BR>{ <BR> father *p = new son;<BR> return p;<BR>}<BR><BR>void main()<BR>{<BR> father* p = father::CreateObj();<BR> cout << ((son*)p)->handle;<BR> delete p;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:loverain 回复日期:2003-01-14 22:20:46
<br>内容:谢谢各位!<BR>我明白了!!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -