c++ - 这是可变成员的问题 - QMUTEX 作为私有(private)成员吗?

标签 c++ qt

我有以下具有私有(private)成员的类 - QMutex - m_mutex_A;

class A
{
  public:
QMutex get_handle();

private:

 QMutex m_mutex_A;

}

QMutex A::get_handle()
{
  return m_mutex_A;
}

但是,在构建此代码段时,我遇到了错误:'QMutex::QMutex(const QMutex&)' is private

在谷歌上,我发现其中一种方法是使 QMutex m_mutex_A;作为 可变 QMutex m_mutex_A;但是,这不起作用。另一个奇怪的部分是,当我将这个 m_mutex_A 移动到 public 时就没有问题了。此外,代码有效。这里的问题是什么?你能解释一下吗?我想,我在这里缺少一些基础知识。

最佳答案

您需要返回一个引用。 QMutex 不提供可访问的复制构造函数(这当然没有意义):

class A {
public:
    QMutex& get_handle() { return m_mutex_A; }

private:
    QMutex m_mutex_A;
};

如果您想在 const 方法内部使用互斥量,则需要 mutable 关键字。

关于c++ - 这是可变成员的问题 - QMUTEX 作为私有(private)成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22659453/

相关文章:

c++ - 当窗口尺寸变小时 QT 标签溢出

c++ - 指向类的指针

java - 从多个视频部分创建单个视频文件

c++ - leveldb 是否每 4KB 或 2KB 数据 block 生成 Bloom Filter?

c++ - fstream 初始化为一个类

c++ - 为什么 QMediaPlayer::duration() 给我的值为 -1?

qt - 将整个文件读取到 QString

c++ - 是否可以在所有平台上使用 vs2010 c++ 并使用 Qt?

c++ - 排列组合 - 运行时失败

qt - 如何在 qwebview 中使用预填充的 sqlite 数据库?