对于noob问题抱歉,但我似乎无法摆脱C++的静态性质。问题:我有一个返回一个枚举的类,根据它我必须使用另一个类来转换所述类并返回一个向量。在代码:取决于枚举的函数超载
enum TYPES { TYPE_A, TYPE_B, TYPE C }
class A {
TYPES getType() {}
}
class B : public A {}
class C : public A {}
class D : public A {}
std::vector<?> convert_to_vector(const A& a) {
// depending on what enum is returned by a.getType()
// I have to convert a into B, C, or D class and return std::vector of
// an appropriate type, e.g. int for B, float for C, etc.
}
int main() {
A a;
auto v = convert_to_vector(a);
}
最简单的方法将使用switch(a.getType())
但我在各种情况下具有不同的返回类型和使用auto
返回类型不起作用。我已经尝试过模板和模板规范,但他们不接受由a.getType()
返回的运行时变量。我想在这里我必须有一些简单的解决方案,但我在这一点上已经没有想法,并且会很感激任何指针。
谢谢!
你想用这个解决方案解决什么问题?你不能使用虚函数,多态性和指向基类的指针吗?一般来说,打开“类型”往往是一个糟糕的设计的标志。 –
那么,我正在使用一个库给我所有的类和枚举。正如我所说的,基类“A”通过该函数只告诉我它的类型,我必须将它转换为派生类来获取向量所需的数据。我想创建一个由enum专门开发的派生类,但C++不是我的母语,我很快就迷失在模板中。 – maga