2

ここで少し助けが必要です: g++ 4.1 を使用してコードをビルドした場合、「クラスへの参照があいまいです」に関するエラーはありませんでした。g++4.5.2 を使用して同じコードをコンパイルする場合にのみ発生します。コード フラグメントは次のとおりです。

#include "tlm_utils/simple_initiator_socket.h"

using tlm_utils::simple_initiator_socket;

class HvEcu : public sc_module {
public:
           ......
    simple_initiator_socket<HvEcu> initiator_socket;
//object instantiated here, also problem happend here....
            ......
};

名前空間の構文が確かに有効であるため、なぜこれが起こるのか本当にわかりません。そのメッセージを取り除くための修正があり、これは "using tlm_utils::simple_initiator_socket;" の代わりです。「tlm_utils::simple_initiator_socket initiator_socket;」と入力するだけです。上記のクラスの本体で。ただし、唯一の変更点がコンパイラのバージョンであることを考えると、上記のコードが機能しない理由はわかりません。

4

1 に答える 1

0

明示的な呼び出しを使用してみてください:

class HvEcu : public sc_module {
    tlm_utils::simple_initiator_socket<HvEcu> initiator_socket;

今日の教訓:コンパイラの変更を最新の状態に保ち、最新の安定版を使用してください。そうしないと、古くて正しくないコードを書くことになります。コンパイラの他の副作用に遭遇します。

于 2012-11-16T00:42:01.240 に答える