【问题标题】:c++ singleton structure queuec++单例结构队列
【发布时间】:2017-03-07 09:19:25
【问题描述】:

单例变量中有一个队列。

但是,当从另一个类推送时,推送值不匹配,错误继续。

请。

[单一标题]

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: no matching function for call to ‘std::queue<_Hybrid_Message_st>::push(broadcast_server::Hybrid_Message_st&)’

【问题讨论】:

  • 您的代码在 MinGW 5.3 上编译和运行没有任何问题。只是一个评论,C++ 不需要typedef struct 语法,你有什么理由使用这种语法

标签: c++ struct queue


【解决方案1】:

看来ss 类型是broadcast_server::Hybrid_Message_st,而Singleton 使用的是Hybrid_Message_st。请注意类型之间命名空间的差异。

您的代码中的某处可能是 using broadcast_server

【讨论】:

  • 谢谢。头文件中包含两次。
猜你喜欢
  • 2017-06-08
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多