如何正确实例化静态字段 tat 是另一个类对象
How properly instantiate static field tat is another class object
如果我在我的 .h 文件中有
class A
{
...
protected:
static std::mutex someMutex;
}
在 cpp 文件中实例化它的正确方法是什么? 只是为了写
std::mutex A::someMutex;
?它有效,但是我基本上两次声明字段的语法感觉有点混乱,所以我决定在这里仔细检查询问,也许还有其他一些(更好的?
你做的是正确的,但这两个符号写了两次并不完全相同。
在类的大括号内(在 .h 文件中(,这是一个声明。
这是一种承诺,说"我发誓这存在于某个地方"。
这可以在许多翻译单元(即包含此.h的.cpp文件中看到。 文件(。
另一方面,您在.cpp文件中编写的内容是此变量;它必须在程序中只存在一次。
自 C++17 以来存在另一种选择:内联变量。
它提供了跳过静态变量定义的能力 在.cpp文件中(对于仅标头解决方案很有用(。
相关文章:
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 检查哪个对象调用了另一个对象的对象方法
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 如何使用函数将一个对象的输入复制到另一个对象中
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 打印对象的映射,其中另一个对象作为键
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 复制赋值函数如何访问另一个对象的私有成员(Stroustroup 原则和实践书)?
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- C++将带有重载构造函数的对象添加到另一个对象
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 如何将"this"的生命周期移动到C++中的另一个对象中?
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 将列表的对象C++移动到另一个对象