C++ 是否可以在不同的类中使用具有不同返回类型的类似成员?
如果定义一个类C++ 是否可以在不同的类中使用具有不同返回类型的类似成员?,c++,C++,如果定义一个类multiA包含类a实例的向量,有没有办法让multiA继承(因为没有更好的术语)a的所有公共成员函数,并返回一个带有输出的std::vector #include <vector> class A { public: A(); float member1(); float member2(); // ... }; class multiA { public: multiA(); // ... // s
multiA
包含类a
实例的向量,有没有办法让multiA
继承(因为没有更好的术语)a的所有公共成员函数,并返回一个带有输出的std::vector
#include <vector>
class A {
public:
A();
float member1();
float member2();
// ...
};
class multiA {
public:
multiA();
// ...
// std::vector<float> member1();
protected:
std::vector<A> data;
};
#包括
甲级{
公众:
A();
浮动成员1();
浮动成员2();
// ...
};
多A类{
公众:
多重a();
// ...
//std::vector member1();
受保护的:
std::矢量数据;
};
我知道我可以在
multiA
中定义一个类似的成员函数,但是如果A
的任何成员被重写,我就需要更改它,更一般的方法可能允许我使用multiA
作为几个类的模板?我想知道是否有办法自动地创建代码< >多A<代码>的成员,基于<代码> A/C++ >并改变它们的返回类型。
也许如果你使用一些强大的宏魔法,你就能够为可能的类型自动执行,但是你需要付出的努力几乎是不值得的。请注意,您首先需要定义
A
上可能的所有操作,以便在std::vector
上实现,这已经很难实现自动化。继承<代码>派生类:public Base等。但这不会更改每个继承成员的返回类型吗?我仍然需要重新定义每个成员,即使它是一个包装,以STL<代码>转换>代码>,例如,不,没有办法做到这一点在C++中。可以编写一个函数模板,将另一个函数和一个向量作为参数,并返回结果向量(我猜这是std::transform
),但不可能生成一个自动使用它的类。不过,您可以编写一个程序(用您喜欢的任何语言)为类自动生成C++代码,即可以编写自定义预处理器。