gpt4 book ai didi

c++ - 将静态常量对象转换为基类

转载 作者:行者123 更新时间:2023-11-28 00:06:44 25 4
gpt4 key购买 nike

我想要一个 static const 对象,其中一些属性设置为某个变量。为此,我考虑派生类并在派生类中设置属性。现在我必须与其他类共享 const 对象,但为此我应该首先将它cast 到基类,但我得到了一个错误。

class QAudiolib
{
private:
class DefaultAudioFormat : QAudioFormat
{
DefaultAudioFormat()
{
setByteOrder(QAudioFormat::LittleEndian);
setChannelCount(2);
setCodec("audio/pcm");
setSampleRate(44100);
setSampleSize(16);
setSampleType(QAudioFormat::SignedInt);
}
};

static const DefaultAudioFormat DEFAULT_FORMAT;

public:
QAudiolib();

static QAudioFormat getDefaultFormat()
{
return reinterpret_cast<QAudioFormat>(DEFAULT_FORMAT);
}

};

编译器在 cast 行得到这个错误

error: 'QAudioFormat' is an inaccessible base of 'QAudiolib::DefaultAudioFormat'
return (QAudioFormat)(DEFAULT_FORMAT);
^

我该怎么办?

最佳答案

改为编写 class DefaultAudioFormat : public QAudioFormat

这使得继承公开,因此可以访问。

虽然我不喜欢使用 reinerpret_cast:为什么不简单地返回 DEFAULT_FORMAT 并将其余的留给编译器呢?

关于c++ - 将静态常量对象转换为基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com