我有以下具有私有(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/