免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7585 | 回复: 19
打印 上一主题 下一主题

紧急求教:纯虚函数已经实现了,为什么还提示抽象类不能初始化? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-29 13:26 |只看该作者 |正序浏览
本帖最后由 light511 于 2010-07-29 13:28 编辑

纯虚函数已经实现了,为什么还提示抽象类不能初始化?
error C2259: 'myclass::NewClass' : cannot instantiate abstract class

代码如下
myclass.h如下:

  1. namespace myclass
  2. {
  3.         class  MyClass
  4.         {
  5.         public:
  6.                 MyClass();
  7.                 static int myget();
  8.                 virtual int func1()=0;
  9.                 virtual int func2()=0;
  10.                 static void myset(char **);
  11.                 ~MyClass();
  12.         };

  13.         class NewClass: MyClass
  14.         {
  15.         public:
  16.                 NewClass();
  17.                 virtual int func1()=0;
  18.                 ~NewClass();
  19.         };
  20. }
复制代码
myclass.cpp如下:

  1. #include<iostream>
  2. #include"myclass.h"
  3. int myclass::MyClass::myget()
  4. {
  5.         return 111;
  6. }
  7. void myclass::MyClass::myset(char ** p)
  8. {
  9.         * p=(char*)malloc(10);
  10.         char *t="good";
  11.         strcpy(*p,t);
  12.         return ;
  13. }
  14. int myclass::NewClass::func1()
  15. {
  16.         return 1;
  17. }

复制代码
mytest.cpp如下:

  1. #include<iostream>
  2. #include"myclass.h"
  3. using namespace std;
  4. using namespace myclass;

  5. int main()
  6. {
  7.         int x = MyClass::myget();
  8.     cout<<"x="<<x<<endl;
  9.         char * p;
  10.         MyClass::myset(&p);
  11.         cout<<"p="<<p<<endl;
  12.         free(p);
  13.         NewClass oneclass=new NewClass();
  14.                 MyClass * twoclass=new NewClass();
  15.         return 0;
  16. }
复制代码

论坛徽章:
0
20 [报告]
发表于 2010-12-18 09:22 |只看该作者
是的,上面的几位说的很对

论坛徽章:
0
19 [报告]
发表于 2010-12-18 08:41 |只看该作者
好好看看c++编程 这个是最基本的
goubao198562 发表于 2010-07-29 13:47



    鄙视这种人....

论坛徽章:
0
18 [报告]
发表于 2010-07-30 08:02 |只看该作者
你应该多看看书,而不是随便拿到个问题就问别人,如果你有一个这样的问题,表示你其实基础都没搞清楚。

个人建议罢了,不必人生攻击。

论坛徽章:
0
17 [报告]
发表于 2010-07-30 01:15 |只看该作者
纯虚函数已经实现了,为什么还提示抽象类不能初始化?
error C2259: 'myclass::NewClass' : cannot instanti ...
light511 发表于 2010-07-29 13:26



    需要实现全部接口

论坛徽章:
1
双子座
日期:2014-08-29 17:15:03
16 [报告]
发表于 2010-07-30 00:09 |只看该作者
呵呵,。。。。

论坛徽章:
0
15 [报告]
发表于 2010-07-29 17:11 |只看该作者
記得某書有講純虛函數,印象最深的是:
srdgame 发表于 2010-07-29 15:04


什么怪异的东西呀

论坛徽章:
1
双子座
日期:2014-08-29 17:15:03
14 [报告]
发表于 2010-07-29 15:04 |只看该作者
記得某書有講純虛函數,印象最深的是:
  1. class Base {
  2.     virtual void fun1() = 0 {
  3.          std::cout << "default impl" << std::endl;
  4.     }
  5. };
  6. class Sub1 : public Base {
  7.      void fun1() {
  8.           Base::fun1();
  9.     }
  10. };
复制代码

论坛徽章:
0
13 [报告]
发表于 2010-07-29 14:18 |只看该作者
回复 12# OwnWaterloo


    非常感谢大家,终于搞定了,C++的路上又前进了一步

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
12 [报告]
发表于 2010-07-29 14:03 |只看该作者
回复 11# light511

NewClass的构造函数没有定义。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP