关于实例化成数组的形式

黑夜愁客 2009-03-03 10:27:15
最近作业要用到SystemC.
这是一个写好的寄存器:
#ifndef __REGISTER_H
#define __REGISTER_H
#include <systemc.h>
#include "stdio.h"

SC_MODULE(Register) {
public:
sc_in_clk clock;
sc_in<bool> write_enable;
sc_in<int> data_in;
sc_out<int> data_out;

SC_CTOR(Register) {
value = 0;

SC_METHOD(register_read);
dont_initialize();
sensitive << clock.pos();

SC_METHOD(register_write);
dont_initialize();
sensitive << data_in << clock.neg();
}

private:
int value;

void register_read() {
data_out = value;
}

void register_write() {
if ( write_enable.read() && clock==0 ) {
value = data_in.read();
cout << "Time: " << sc_time_stamp() <<" :: " << endl;
cout << "\t" << name() << "\twrite:\t";
printf("%i\n",data_in.read());
}
}
};
#endif

现在要用这个Register.h来实现一个Register File,假设这里只考虑8个寄存器。即Register的8个实例,我想把它实例化成数组形式
Register reg[] = new Register[8];//这样好像只有分配空间,没有实例化
是不是要一个循环,reg[i] = new Register("new Register");
C++不熟悉,见笑。
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hairetz 的回复:]
Register reg[] = new Register[8];//这样好像只有分配空间,没有实例化
是不是要一个循环,reg[i] = new Register("new Register");
第一步是new operator分配了空间,还调用了Register的构造,但是是默认构造.
如果你再一个循环,reg[i] = new Register("new Register"); ,那之前的内存会泄露哦,提醒楼主,你直接执行第2步不就得了,第一步去掉.
[/Quote]
恩,我那里只有有参数的构造函数。
我知道了有点,
Register *reg[8];
然后初始化
for(int i=0;i<9;i++){
reg[i] newreg = new Register("NewRegister");
}
Thx
nineforever 2009-03-03
  • 打赏
  • 举报
回复
Register reg[] = new Register[8]是无效语法。。。
frank529 2009-03-03
  • 打赏
  • 举报
回复
如果你的Register类只有默认的不带参数的构造函数,可以用Register reg[] = new Register[8]实例化;
如果你要用自己定义的带参数的构造函数,则需要用循环,reg[i] = new Register("参数");
  • 打赏
  • 举报
回复
Register reg[] = new Register[8];//这样好像只有分配空间,没有实例化
是不是要一个循环,reg[i] = new Register("new Register");
第一步是new operator分配了空间,还调用了Register的构造,但是是默认构造.
如果你再一个循环,reg[i] = new Register("new Register"); ,那之前的内存会泄露哦,提醒楼主,你直接执行第2步不就得了,第一步去掉.
nineforever 2009-03-03
  • 打赏
  • 举报
回复
你的Register类并没有接受一个参数的构造函数啊
直接用
Register reg[8];
就可以了

64,646

社区成员

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

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