2017-03-07 17 views
0

シングルトン変数にキューがあります。C++シングルトン構造キュー

しかし、別のクラスからプッシュすると、プッシュ値が一致せず、エラーが続行されます。

ください。

[シングルトンヘッダ]

typedef struct _Hybrid_Message_st 
{ 
    int hy_state; 
    std::string hy_msg; 
} Hybrid_Message_st; 

class Hybrid_Singleton 
{ 
    private: 
    static Hybrid_Singleton *instance; 
    Hybrid_Singleton(void){} 
    public: 
    ~Hybrid_Singleton(void){} 
    static Hybrid_Singleton* getInstance(); 
    std::queue<Hybrid_Message_st> hy_queue; 
    int count; 
}; 

[シングルトンソース]

Hybrid_Singleton* Hybrid_Singleton::getInstance() 
    { 
    if(instance == NULL) 
    { 
     instance = new Hybrid_Singleton; 
    } 

    return instance; 
} 

Hybrid_Singleton *Hybrid_Singleton::instance = NULL; 

[質問?]

Hybrid_Message_st ss; 
ss.hy_state = 0; 
ss.hy_msg = "Hellow"; 
Hybrid_Singleton::getInstance()->hy_queue.push(ss); 

[ERROR]

error: no matching function for call to ‘std::queue<_Hybrid_Message_st>::push(broadcast_server::Hybrid_Message_st&)’ 
+1

コードはMinGW 5.3で問題なくコンパイルされ、実行されます。ちょうどコメント、 'typedef struct'構文はC++では必要ないはずですが、なぜこの構文を使用しているのか理由はありますか? –

答えて

1

タイプssbroadcast_server::Hybrid_Message_stであり、シングルトンはHybrid_Message_stを使用しているようです。型間の名前空間の違いに注意してください。

あなたのコードのどこかにusing broadcast_serverである可能性があります。

+0

ありがとう。 インクルードはヘッダーに2回含まれていました。 –