请教请教,子对象数组构造函数?

konghou 2009-04-26 11:14:29
请问大侠们一个构造函数的问题

class A
class B
class C

class A: public B
{
A(C *p):B(p){}
}
Class C
{
C();
...
A[1000];
}

C的构造函数怎么写呢,要对子对象数组A[]初始化,把class C的this指针赋给每个对象数组中的class A的构造函数。

...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
licgsh 2009-12-22
  • 打赏
  • 举报
回复
楼主,我的回复您满意吗?我是清华出版的《基于自然语言思想的递进C/C++教程》(上册 C)的作者,下册c++即将出版,将说明此问题。欢迎关注我的书。
class A
{
public:
A() {}
A(int NewValA);
private:
int ValA;
};

A::A(int NewValA)
{
ValA=NewValA;
}

class B:public A
{
public:
B() { }
B(int NewValB, int NewValA1, int NewValA2);
private:
int ValB;
A a[2];
};
B::B(int NewValB, int NewValA1, int NewValA2)//:a[0](NewValA1), a[1](NewValA2)
{
a[0]=A(NewValA1);
a[1]=A(NewValA2) ;
ValB=NewValB;
}
void main()
{
B b(1,2,3);
}
konghou 2009-04-27
  • 打赏
  • 举报
回复
不好意思,可能是偶没说清楚。
现在class A 是继承class B 的,实际上B也是别的类的派生类,这里忽略。
但是A的构造函数需要传参数给它的基类的构造函数,这样通常只能用初始化列表的方法。
不过这里在class C中定义了类A的数组,那么就不能用初始化列表来传参数给A的基类了。
有没有别的办法解决呢?
如果没有直接的方法,有什么其它思路可以达到相同的作用呢。
mengde007 2009-04-26
  • 打赏
  • 举报
回复
不好意思,写错了;是1000;
mengde007 2009-04-26
  • 打赏
  • 举报
回复
C::C()
{
memset(A,0,100);
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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