我正在编写一个程序,可以在构造函数中使用3个int或3个浮点数(我想我需要2个构造函数)。我想声明一个数组并将值存储在数组“numbers”中。
如果我不知道将调用哪个构造函数,我不知道如何声明“数字”(作为int数组或浮点数组)。
有没有一种好的技巧来解决这个问题?或者我可以创建一个int数组和一个浮点数组,并以某种方式有一个指向正在使用的数组的通用指针(使用void指针是最好的方法)?
答案 0 :(得分:5)
看起来你想要一个模板化的课程。
template <class T>
class Foo
{
public:
Foo(T a, T b, T c)
{
numbers[0] = a;
numbers[1] = b;
numbers[2] = c;
}
private:
T numbers[3];
};
答案 1 :(得分:5)
你不能使用模板吗?
示例:
template <class T>
class Foo {
public Foo(T a, T b, T c);
};
//
Foo<float> aaa(1.0f, 1.0f, 0.5f);
Foo<int> bbb(1, 2, 3);
答案 2 :(得分:0)
为什么不制作
class Foo {
public:
Foo(double a, double b, double c)
:_a(a), _b(b), _c(c)
{}
virtual double get_a() {return _a;}
virtual double get_b() {return _b;}
virtual double get_c() {return _c;}
// more methods
protected:
double _a, _b, _c;
};
适用于整数和浮点数:
Foo ifoo(1, 3, 5);
Foo ffoo(2.0, 4.0, 6.0);
并混合它们:
Foo mfoo(1, 4.0, 5);
对于 int 和 float ,douable 存储空间超过了enouh