【问题标题】:I am not able to create a vector of Poco::Threads我无法创建 Poco::Threads 的向量
【发布时间】:2018-06-04 06:13:29
【问题描述】:

我正在创建一个这样的 Poco 线程向量:

using Poco::Thread;
std::vector<Thread> threads;
Thread pt;
threads.push_back(pt);

我收到以下错误:

c:\program 文件 (x86)\microsoft visual studio 12.0\vc\include\xmemory0(593): 错误 C2248: 'Poco::Thread::Thread' : 无法访问在类 'Poco::Thread' 中声明的私有成员

是什么原因,我应该使用哪个容器来存储线程?

【问题讨论】:

  • 这是 complete 错误信息吗?您在您的代码的哪一行得到错误?
  • 第二行出现错误。
  • 什么,在std::vector&lt;Thread&gt; threads; 线上?请编辑您的问题,在您收到错误的那一行添加评论。当然,也可以将 fullcomplete 错误消息复制粘贴到问题中。
  • 我认为 Poco 是命名空间,而 Thread 是其中的一个类。所以也许你打算使用 Poco;而不是使用 Poco::Thread;
  • 这不是完整的错误消息。 Yhe 编译器正在发出注释、警告或其他行或错误。你省略了它们。不要忽略编译器正在生成的诊断。 您分享的内容旁边的行很有可能描述了问题。

标签: c++ poco poco-libraries


【解决方案1】:

Poco::Thread 只能移动,不能复制,因此依赖于移动构造函数/移动赋值运算符。您使用的是不支持正确移动语义的旧版 Visual Studio。

您需要将您的视觉工作室升级到不超过 5 年的版本

【讨论】:

    【解决方案2】:
    func(){ do something }
    
    std::thread th1(func);
    std::thread th2(func);
    

    // 将线程对象移动到向量中

     vecOfThreads.push_back(std::move(th1));
        vecOfThreads.push_back(std::move(th2));
    

    // 给vector添加一个Thread对象

    vecOfThreads.push_back(std::thread(func));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      相关资源
      最近更新 更多