Jump to content

SC_CTOR initialization error ???

Recommended Posts

I am a novice at SystemC (some OOP background but not much) ...

I am getting an error for the code below ... ../src/xor2.h:20:31: error: invalid initializer for array member 'nand<2> xor2::nand2 [4]'

I have much more complicated but netted my problem down to this much simpler and smaller example ...

#include "systemc.h"

template <int width>
SC_MODULE(nand) {
    sc_in<bool> A[width];
    sc_out<bool> F;

    void nand_func() {

    SC_CTOR(nand) {
        sensitive << A;

#include "systemc.h"

#include "nand.h"

SC_MODULE(xor2) {
    sc_in<bool> A, B;
    sc_out<bool> F;

    nand<2> nand2[4];

    sc_signal<bool> sig1, sig2, sig3;

    SC_CTOR(xor2) : nand2("NAND2") {




I would greatly appreciate any help and suggestions of ways to use multiple template'd modules in this way ...




Share this post

Link to post
Share on other sites

Thanks Ralph,

I tried what you suggested and that should be the right answer but I get the following error ...

../src/xor2.h:17:38: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  sc_vector<nand<2> > nand2{"NAND2", 4};

As I said I am a novice at this ... and my next Q isn't SystemC but maybe you can help me ...

I am using Eclipse and Cygwin gcc ... Can I add the c++11option to fix the error I got?

Share this post

Link to post
Share on other sites

Assumes you are using a version of c++ that supports c++11, just add -std=c++11 to fix this problem or move the constructor arguments to the initializer list of your constructor, which will require abandoning the SC_CTOR macro in favor of full C++ constructor syntax. Or you  use the deferred vector construction.

Gcc 4.8 or newer supports c++11 if I recall correctly.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now