您的位置:程序门 -> c/c++ -> c++ 语言



急!为什么说我没有构造函数?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


急!为什么说我没有构造函数?[已结贴,结贴人:xsh525]
发表于:2007-06-18 11:11:03 楼主
现有三个文件
//a.h文件
class   a
{
    a();
.......
}

//a.cpp文件
a::a()
{}

//b.h文件

class   a;//声明了class   a
.....
class   b:
{
      void   init()
      {
          a*   p   =   new   a();
          .....
      }
}

编译的时候,a*   p   =   new   a()这行报错:

error   c2512:   'a '   :   no   appropriate   default   constructor   available

请问是为什么?谢谢


发表于:2007-06-18 11:14:091楼 得分:2
将“   a*   p   =   new   a();”
改成   a*   p   =   new   a;即可。
发表于:2007-06-18 11:15:032楼 得分:2
在b.h里包含a.h
发表于:2007-06-18 11:15:433楼 得分:2
//b.h文件

#include   "a.h "     ////


.....
class   b:
{
      void   init()
      {
          a*   p   =   new   a();
          .....
      }
}
发表于:2007-06-18 11:20:084楼 得分:0
谢谢各位的回答,但是

改成   a*   p   =   new   a;也是一样的,另外由于依赖性方面的考虑,工程中我不能#include   "a.h "
发表于:2007-06-18 11:31:195楼 得分:2
晕,不能#include   "a.h ",那在b.h中你怎么能声明class   a?
发表于:2007-06-18 11:44:016楼 得分:0
那就把class   a
放到b.h里,否则,没办法
发表于:2007-06-18 12:27:187楼 得分:0
要让b能看到a类,

并把a的构造函数前面加上public
发表于:2007-06-18 12:28:018楼 得分:2
因为默认是私有的,不能进行创建a类的对象

发表于:2007-06-18 13:24:029楼 得分:0
知道原因了,原来是声明只能对t*,t&有效,晕


快速检索

最新资讯
热门点击