使用新的位置来创建静态常量指针,指向静态内存缓冲区
Use placement new to create a static const pointer to a static memory buffer
我想初始化一个静态的,恒定的指针,指向类Type MyClass2的对象,该指针将其实例化时存储在类MyClass1中的静态数据缓冲区中。
>这不起作用:
class MyClass1 {
public:
MyClass1()
{
_my_class_2_ptr = new (_my_class_2_buf) MyClass2();
}
private:
static MyClass2 *const _my_class_2_ptr;
static char *_my_class_2_buf = new char[sizeof(MyClass2)];
};
有没有办法完成这样的事情?
当变量静态时,您无法在构造函数中初始化它们。只是没有意义!您想做的是
(在标题中)
class MyClass1 {
// member
public:
static MyClass2 *const _my_class_2_ptr;
static std::aligned_storage_t<sizeof(MyClass2)> _my_class_2_buf;
};
(在CPP中)
std::aligned_storage_t<sizeof(MyClass2)> MyClass1::_my_class_2_buf;
MyClass2* const MyClass1::_my_class_2_ptr = new (&MyClass1::_my_class_2_buf) MyClass2;
您可以在类外移动static
成员变量的定义和Intialization。
class MyClass1 {
public:
MyClass1() {}
private:
static MyClass2 *const _my_class_2_ptr;
static char *_my_class_2_buf;
};
char *MyClass2::_my_class_2_buf = new char[sizeof(MyClass2)];
MyClass2 *const MyClass1::_my_class_2_ptr = new (_my_class_2_buf) MyClass2();
相关文章:
- 如何在类内部使用和访问静态指针到成员值s_ptm?
- 如何使用指向动态数组的静态指针创建类?
- 静态指针指向这个为mock for googletest定义的类内部
- 如何定义指向文件流的静态指针
- 为什么静态指针返回函数中有一个"静态"键?
- 静态指针指向会员数组的安全操作员[]访问
- 如何使用nullptr初始化同一类对象的静态指针数组?
- 如何在C 中创建指向向量的静态指针
- 指向自定义类型的静态指针在初始化后使用相同类型的静态非空指针保持 nullptr
- 错误的LNK2001当使用静态指针到另一个类时
- 使用局部静态std :: ARNE_FLAG和局部静态指针对静态变量的线程安全初始化
- 指向 N 个数组的静态指针,或指向 N 个静态数组的指针
- 指向静态变量的指针和指向某个变量的静态指针之间的区别
- C 功能指针指向静态指针对象的成员功能
- 是一个静态指针,标记为可能丢失的块不良
- 静态指针和其他奇怪的东西
- 静态函数到类的静态指针之间的区别是什么
- 静态指针和运算符新增
- 结构中的 CUDA 设备功能指针,没有静态指针或符号副本
- 正在初始化静态类中的静态指针