我正在嘗試在我的類建構式中將 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 屬性?
uj5u.com熱心網友回復:
來自檔案:
QTextCodec::~QTextCodec ( )
protected virtual
銷毀 QTextCodec。您不應該洗掉編解碼器。一旦創建,它們的生命周期就成為 CopperSpice 的責任。
與合并版本相同:
QTextCodec::~QTextCodec()
[virtual protected]
銷毀 QTextCodec。請注意,您不應該自己洗掉編解碼器:一旦創建它們就成為 Qt 的責任。
因此,也許將空洗掉器添加到您的shared_ptr或使用原始指標并將其留給庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420593.html
標籤:
上一篇:候選模板被忽略:無法將'function<type-parameter-0-0()>'與'double(*)()'匹配
