我在我的应用程序的 .h 文件中定义了 2 个类
class GroupElement : public QSharedData
{
public:
int Id;
int GroupIndex;
QString Title;
QSharedDataPointer<AccessDescriptor> pAccessDescriptor;
QString Owner;
};
class Class2 : public GroupElement
{
public:
QSharedDataPointer<QList<int> > Categories;
// ... many other class members
}
class3 : public QObject
{
Q_OBJECT
public:
template <class T> QSharedDataPointer<QList<T> > toTQList(QVariant qv );
//...more ....
}
在另一个函数中,我尝试为“类别”分配一个值
QSharedDataPointer<Class2>
Class3::afunction(QVariantMap o)
{
QSharedDataPointer<Class2> getResult(new Class2());
getResult-> Categories = toTQList<int>(o["Categories"]);
// ... more code ...
}
如图所示编译代码时,编译器会报错“class ... has no member named 'ref'”。这通常表明我需要添加 public QSharedData 作为基类。但在这种情况下,Class2 已经派生自 GroupElement,它以 QSharedData 作为基类。如果我将 QSharedData 作为基类添加到 Class 2,我会收到警告消息“在 'Class2' 中无法访问直接基 'QSharedData' 会造成歧义。我认为可能遇到了多重继承的“钻石问题”之一,但我' m 在 Qt 或 c++ 方面经验不足,不知道如何解决它。
帮助将不胜感激。