C++基础搞忘了,求指点

dinglbo 2009-08-16 04:45:15
我有定义了一个类A:
class A
{
public:
A(CTime time, CString s1,CString s2);
virtual ~A();

};
类B:
class B : public A
{
public:
B(CTime time, CString s1,CString s2);
virtual ~B();

};

B的构造函数是这样写的:
B::B(CTime time, CString s1,CString s2):A(time,s1,s2)
{
}

然后我有这样使用:
CArray<A, A&> infoes;
CForumInfo forumInfo1(CTime::GetCurrentTime(),"haha","heihei");
CForumInfo forumInfo2(CTime::GetCurrentTime(),"haha","heihei");
infoes.Add(forumInfo1);
infoes.Add(forumInfo2);

编译的时候就会出现错误:
error C2512: 'CInfomation' : no appropriate default constructor available

这个怎么解决啊?
我用CArray就是想做一个A的数组,里面包含派生自A的B等对象。
第一次用CArray这种高级的东西,就碰壁了!!!
...全文
158 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinglbo 2009-08-16
  • 打赏
  • 举报
回复
就是使用第一句的时候就出现了那个错误!
即CArray <CInfomation, CInfomation&> infoes;
我不知道这句为什么要求CInfomation要有个默认的构造函数呢?
zhugay 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dinglbo 的回复:]
引用楼主 dinglbo 的回复:
我有定义了一个类A:
class A
{
public:
A(CTime time, CString s1,CString s2);
virtual ~A();

};
类B:
class B : public A
{
public:
B(CTime time, CString s1,CString s2);
virtual ~B();

};

B的构造函数是这样写的:
B::B(CTime time, CString s1,CString s2):A(time,s1,s2)
{
}

然后我有这样使用:
CArray <A, A&> infoes;
CForumInfo forumInfo1(CTime::GetCurrentTime(),"haha","heihei");
CForumInfo forumInfo2(CTime::GetCurrentTime(),"haha","heihei");
infoes.Add(forumInfo1);
infoes.Add(forumInfo2);

编译的时候就会出现错误:
error C2512: 'CInfomation' : no appropriate default constructor available

这个怎么解决啊?
我用CArray就是想做一个A的数组,里面包含派生自A的B等对象。
第一次用CArray这种高级的东西,就碰壁了!!!


我试了一下,把第1 4 5三条语句注释掉,就可以通过编译,但一有了那个
CArray <CInfomation, CInfomation&> infoes;
就会出现这个错误!

所以我觉得这个应该是跟CArray有关吧。。。
[/Quote]
说的对,和4 5语句有关,CArray::Add(一个对象),应该是把该对象拷贝一次,存储的是它的拷贝,大概需要有个默认构造函数吧。具体的,看看c++语法
dinglbo 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 dinglbo 的回复:]
我有定义了一个类A:
class A 
{
public:
A(CTime time, CString s1,CString s2);
virtual ~A();

};
类B:
class B : public A 
{
public:
B(CTime time, CString s1,CString s2);
virtual ~B();

};

B的构造函数是这样写的:
B::B(CTime time, CString s1,CString s2):A(time,s1,s2)
{
}

然后我有这样使用:
CArray <A, A&> infoes;
CForumInfo forumInfo1(CTime::GetCurrentTime(),"haha","heihei");
CForumInfo forumInfo2(CTime::GetCurrentTime(),"haha","heihei");
infoes.Add(forumInfo1);
infoes.Add(forumInfo2);

编译的时候就会出现错误:
error C2512: 'CInfomation' : no appropriate default constructor available

这个怎么解决啊?
我用CArray就是想做一个A的数组,里面包含派生自A的B等对象。
第一次用CArray这种高级的东西,就碰壁了!!!
[/Quote]

我试了一下,把第1 4 5三条语句注释掉,就可以通过编译,但一有了那个
CArray <CInfomation, CInfomation&> infoes;
就会出现这个错误!

所以我觉得这个应该是跟CArray有关吧。。。
healer_kx 2009-08-16
  • 打赏
  • 举报
回复
就是说自己当初也没有学清楚呗? 我觉得taodm会这么说。
  • 打赏
  • 举报
回复
声明一个无参的构造函数
dinglbo 2009-08-16
  • 打赏
  • 举报
回复
还是少改了一个,构造函数那儿,不过应该不影响意思的表达了。。。
dinglbo 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
error C2512: 'CInfomation' : no appropriate default constructor available

这个错误和array有关系吗?
错误说CInfomation没有相应的构造函数
[/Quote]

不好意思。。。为了图简便,用了A、B之类的,但又没改完。。。
正确的如下面:


我有定义了一个类CInfomation:
class CInfomation
{
public:
CInfomation(CTime time, CString s1,CString s2);
virtual ~CInfomation();

};
类CForumInfo:
class CForumInfo : public CInfomation
{
public:
CForumInfo(CTime time, CString s1,CString s2);
virtual ~CForumInfo();

};

B的构造函数是这样写的:
CForumInfo::CForumInfo(CTime time, CString s1,CString s2):CInfomation(time,s1,s2)
{
}

然后我有这样使用:
CArray <CInfomation, CInfomation&> infoes;
CForumInfo forumInfo1(CTime::GetCurrentTime(),"haha","heihei");
CForumInfo forumInfo2(CTime::GetCurrentTime(),"haha","heihei");
infoes.Add(forumInfo1);
infoes.Add(forumInfo2);

编译的时候就会出现错误:
error C2512: 'CInfomation' : no appropriate default constructor available

这个怎么解决啊?
我用CArray就是想做一个A的数组,里面包含派生自A的B等对象。
第一次用CArray这种高级的东西,就碰壁了!!!
ouyh12345 2009-08-16
  • 打赏
  • 举报
回复
error C2512: 'CInfomation' : no appropriate default constructor available

这个错误和array有关系吗?
错误说CInfomation没有相应的构造函数
dinglbo 2009-08-16
  • 打赏
  • 举报
回复
自已SF

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧