В чем основное различие между конструктором systemc и обычным конструктором C ++?Можем ли мы объявить конструктор systemc закрытым? - PullRequest
0 голосов
/ 27 ноября 2018

Работая в программе system c, я пропустил ключевое слово public перед конструктором, но программа работает нормально.Но в C ++ выдает ошибку

1 Ответ

0 голосов
/ 28 ноября 2018

SystemC требует, чтобы первый параметр конструктора модуля был sc_module_name.Кроме этого, в этом нет ничего особенного.Макросы SystemC SC_MODULE и SC_CTOR просто экономят ваше время, но вы не обязаны их использовать.

SC_MODULE( dut ) {
    SC_CTOR(dut) { }
};

Эквивалентно:

struct dut : sc_core::sc_module {
    typedef dut SC_CURRENT_USER_MODULE;
    dut(::sc_core::sc_module_name) {}
};

Обратите внимание, что struct участников являются открытыми по умолчанию, а class члены являются закрытыми по умолчанию.Если вы используете class вместо struct, вам нужно будет сделать их общедоступными, добавив public: явно:

class dut : public sc_core::sc_module {
    typedef dut SC_CURRENT_USER_MODULE;

public:
    dut(::sc_core::sc_module_name) {}
};
...