2017-03-07 3 views
0

Es gibt eine Warteschlange in der Singleton-Variable.C++ Singleton Struktur Queue

Beim Drücken von einer anderen Klasse wird der Push-Wert jedoch nicht angeglichen und der Fehler wird fortgesetzt.

Bitte.

[Singleton header]

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; 
}; 

[Singleton Quelle]

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

    return instance; 
} 

Hybrid_Singleton *Hybrid_Singleton::instance = NULL; 

[Frage?]

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

[Fehler]

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

Ihr Code kompiliert und läuft ohne Probleme auf MinGW 5.3. Nur ein Kommentar, die 'typedef struct'-Syntax sollte nicht mit C++ benötigt werden, gibt es einen Grund, warum Sie diese Syntax verwenden –

Antwort

1

Es scheint, dass der Typ ss ein broadcast_server::Hybrid_Message_st ist, während der Singleton einen Hybrid_Message_st verwendet. Beachten Sie den Unterschied im Namespace zwischen den Typen.

Es ist möglich, dass Sie irgendwo in Ihrem Code using broadcast_server sind.

+0

Vielen Dank. Das Include wurde zweimal in die Kopfzeile eingefügt. –