我目前正在研究一个项目,其中我需要来自多个类的对象向量,它们共享相同的基本类,以便稍后我可以从中调用方法。假设我的课程如下所示:
class basicClass
{
public:
void seta(bool a);
basicClass();
private:
int a;
};
class derivedClass1 : public basicClass
{
int b;
public:
derivedClass1();
void methodInClass1();
};
class derivedClass2 : public basicClass
{
int c;
public:
derivedClass2();
void methodInClass2();
};
然后在 main.cpp 我想调用以下方法。
QVector<basicClass*> vectorINeed;
derviedClass1 *object= new derviedClass1();
qDebug() << object->basicClass::seta(true);
qDebug() << object->derivedClass1::methodInClass1();
vectorINeed.append(object);
qDebug() << vectorINeed[0]->basicClass::seta(true);
qDebug() << vectorINeed[0]->derivedClass1::methodInClass1();
甚至认为我看到前三个工作得很好,最后一个没有,我得到的错误是“derivedClass1'不是'basicClass'的基础”。有什么办法可以修复我的课程,以便我可以真正做我想做的事情?我尝试将 basicClass 中的方法更改为 virtual 但这并不能解决问题,我还尝试了一些强制转换,但要么我做错了,要么这不是解决我的问题的方法。
我真的很感激任何帮助,甚至是关于什么可能有用的提示。我也希望编辑没问题。