Jump to content

Object Oriented programming using SystemC


Recommended Posts



From what I have seen, SystemC throws error while attempting to use Inheritance/polymorphism.


For example


I have a Task 




sc_in<bool> in;

sc_in<bool> out;


void cliamResource()



void claimMemory()








Like Wise i have a Resource Module :


And then I have number of C++ classes( class A, class B which defines each function I am using).


But I am not able to inherit these normal c++ classes like 


SC_MODULE(Task) : public A            \\ where A is a Class A




Can anyone help me how t sort this out (or) Is it possible to inherit C++ classes ??


I have a error like : class or struct definition is missing




Link to post
Share on other sites

Thank a lot sir, 


It worked, but I have a small issue with the constructor


For example I have a Base class and I derive it in a SystemC Module as follows:


Class Base


int h;


void some_function()




and then I have my derived class of SystemC as follows:


class TaskA : public sc_module, public base 



sc-in<bool> a;

sc_out<bool> b;


Base b; // Instantiating a object from base Class







SC_CTOR(TaskA) : b ("base")







ERROR: No Default Constructor exists for "base" class. if its is normal c++, I can sort it out, but Im unable to figure out wat to do with this SC_CTOR macro.







Link to post
Share on other sites



This is the macro:


#define SC_CTOR(user_module_name)                                             \
    typedef user_module_name SC_CURRENT_USER_MODULE;                          \
    user_module_name( ::sc_core::sc_module_name )


you can use a standard constructor instead of the macro:



TaskA(sc_core::sc_module_name name)
    : sc_module (name),
      b ("base")


For your error:


When you declare a non-default constructor for a class, the compiler does not generate a default one anymore. So you have to provide your own.

Link to post
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...