C++ systemc构造函数初始化失败 \ifndef RAM\u H #定义RAM_H #包括 SC_模块(ram){ 无效ram_proc(); SC_有_过程(ram); 私人: sc_时钟; }; #恩迪夫

C++ systemc构造函数初始化失败 \ifndef RAM\u H #定义RAM_H #包括 SC_模块(ram){ 无效ram_proc(); SC_有_过程(ram); 私人: sc_时钟; }; #恩迪夫,c++,systemc,C++,Systemc,然后在ram.cpp中,我有以下代码 #ifndef RAM_H #define RAM_H #include <systemc.h> SC_MODULE(ram) { void ram_proc(); SC_HAS_PROCESS(ram); private: sc_clock clock; }; #endif #包括“ram.h” ram::ram(sc_module_name name):clock(“clock”,1,sc_NS){std::cout

然后在ram.cpp中,我有以下代码

#ifndef RAM_H
#define RAM_H
#include <systemc.h>


SC_MODULE(ram) {

 void ram_proc();

 SC_HAS_PROCESS(ram);

private:
  sc_clock clock;
 };

 #endif
#包括“ram.h”

ram::ram(sc_module_name name):clock(“clock”,1,sc_NS){std::cout修复代码中的缩进和新行

 #include "ram.h"

 ram::ram(sc_module_name name_): clock("clock",1,SC_NS) {std::cout<<"I am in clock "<<std::endl;}

  { //the error is occurring hier

SC_THREAD(ram_proc);

}

void  ram::ram_proc () {
  std::cout<<"I am in method ram_proc "<<std::endl;
}

修复缩进和代码看起来像的新行

 #include "ram.h"

 ram::ram(sc_module_name name_): clock("clock",1,SC_NS) {std::cout<<"I am in clock "<<std::endl;}

  { //the error is occurring hier

SC_THREAD(ram_proc);

}

void  ram::ram_proc () {
  std::cout<<"I am in method ram_proc "<<std::endl;
}

您有两个作用域块。您的意思是有
{std::coutyes。时钟是ram的成员,我正在尝试初始化构造函数,在时钟块中放入一些代码。您不能只将一个块添加到另一个块中。将您要添加的代码行添加到现有的块中。将块添加到另一个块中是什么意思?在构造函数clo之前,时钟块已关闭ck开始..就像hier@NathanOliver一样,我刚刚做了一个更新。在键入问题时,我错误地将void放在构造函数之前。这就是我刚刚编辑的内容。您有两个作用域块。您的意思是有
{std::coutyes。时钟是ram的成员,我正在尝试初始化构造函数,在时钟块中放入一些代码。您不能只将一个块添加到另一个块中。将您要添加的代码行添加到现有的块中。将块添加到另一个块中是什么意思?在构造函数clo之前,时钟块已关闭ck开始..就像hier@NathanOliver一样,我刚刚做了一个更新。在键入问题时,我错误地将void放在构造函数之前。这就是我刚刚编辑的Hanks很多..这确实编译没有错误。想法是在时钟中执行一些实现,这将在构造函数开始时考虑。最好的方法是什么要做到这一点,我必须像在正常情况下一样将时钟传递给模块吗OOP@akaAlso不确定。我从未使用过systemc。非常感谢。这确实可以无错误地编译。想法是在时钟中执行一些实现,这将在构造函数启动时予以考虑。这样做的最佳方式是什么?我必须通过c吗像在正常情况下一样锁定模块OOP@akaAlso不确定。我从未使用过systemc。
void ram::ram(sc_module_name name_): clock("clock",1,SC_NS) 
{
    std::cout<<"I am in clock "<<std::endl;
    SC_THREAD(ram_proc);
}