C++ Boost message_queue:只有构造函数允许我配置它,没有其他成员函数可用

C++ Boost message_queue:只有构造函数允许我配置它,没有其他成员函数可用,c++,boost,constructor,initialization,message-queue,C++,Boost,Constructor,Initialization,Message Queue,这是一个典型的Boost消息队列示例: #include <boost/interprocess/ipc/message_queue.hpp> using namespace boost::interprocess; struct Data { ... }; int main() { Data data1; message_queue::remove("message_queue"); message_queue mq(create_only, "mes

这是一个典型的Boost消息队列示例:

#include <boost/interprocess/ipc/message_queue.hpp>
using namespace boost::interprocess;
struct Data { ... };

int main() {
    Data data1;

    message_queue::remove("message_queue");

    message_queue mq(create_only, "message_queue", 100, sizeof(Data));

    mq.send(&data1, sizeof(Data), 0);
}
似乎我只能初始化成员初始化列表中的
mq
对象,因为
message\u queue
不提供成员函数以在以后设置其参数

我错了吗?还有别的办法吗

例如,我希望能够让一个对象使用一个消息队列,其名称作为参数传递给它的一个成员函数

谢谢。

这个怎么样:

class QueueManager
{
  boost::scoped_ptr<message_queue> mq;

  // ctor
  QueueManager(string msgqname) 
  {
      mq.reset(new message_queue(create_only, msgqname, 100, sizeof(Data));
  }
};
类队列管理器
{
boost::作用域_ptr mq;
//执行器
队列管理器(字符串msgqname)
{
重置(新消息队列(仅创建队列,msgqname,100,sizeof(数据));
}
};
只是想让您知道,至少有一些参数可以传递给类构造函数。
由于消息队列下面使用共享内存,我认为大多数参数在构造后都无法更改。

看来您以后确实无法设置参数,但这与您的需求有什么关系?假设我希望我的对象使用一个可以在以后更改的消息队列。我想在普通me中按需创建消息队列mber函数,而不是在构造函数中。在我的情况下,像您那样使用作用域\u ptr似乎很有效。谢谢!
class QueueManager
{
  boost::scoped_ptr<message_queue> mq;

  // ctor
  QueueManager(string msgqname) 
  {
      mq.reset(new message_queue(create_only, msgqname, 100, sizeof(Data));
  }
};