如何在我的构造函数中将shared_ptr初始化为QTextCodec
How to initialize a shared_ptr to a QTextCodec in my constructor?
我正在尝试在类构造函数中将shared_ptr初始化为QTextCodec(用于字符集转换的Qt类(。
这是我获得"虚拟QTextCodec::~QTextCodec(("的代码,在该上下文中受到保护错误:
myencoder.h
#ifndef MYENCODER_H
#define MYENCODER_H
#include <memory>
#include <QTextCodec>
class MyEncoder
{
std::shared_ptr<QTextCodec> m_codec;
public:
MyEncoder(QString &aCodec);
};
#endif // MYENCODER_H
myencoder.cpp
#include "myencoder.h"
MyEncoder::MyEncoder(QString &aCodec)
{
m_codec = std::shared_ptr<QTextCodec> (QTextCodec::codecForName(aCodec.toLatin1()));
}
如何在MyEncoder的构造函数中初始化m_codec属性?
来自文档:
QTextCodec::~QTextCodec ( )
protected virtual
销毁QTextCodec。您不应该删除编解码器。一旦被创造出来,他们的一生就成了CopperSpice的责任。
与合并版本相同:
QTextCodec::~QTextCodec()
[virtual protected]
销毁QTextCodec。请注意,您不应该自己删除编解码器:一旦创建,它们将成为Qt的责任。
所以,也许可以将空的deleter添加到shared_ptr
中,或者使用原始指针并将其留给库。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- CLANG 编译器 说:变量"PTR"可能未初始化
- 在malloc()之后初始化结构中对ptr的引用
- 唯一ptr初始化断言失败
- 使用boost lambda构造创建初始化的智能ptr的容器
- "int* ptr = int()"值初始化如何不违法?