繁体   English   中英

C ++通用指针? 空指针?

[英]c++ generic pointer? void pointer?

我正在编写一个可以在构造函数中使用3个int或3个float的程序(我想为此需要2个构造函数)。 我想声明一个数组并将值存储在数组“数字”中。

如果我不知道将调用哪个构造函数,则不确定如何声明“数字”(作为int数组还是作为float数组)。

有什么好的方法可以解决这个问题? 还是可以创建一个int数组和一个float数组,并且以某种方式有一个指向要使用的数组的通用指针(使用void指针是执行此操作的最佳方法)?

看起来您想要一个模板化的类。

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];
};

您不能为此使用模板吗?

例:

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);

为什么不做

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;
};

对于int和float都适用:

Foo ifoo(1, 3, 5);
Foo ffoo(2.0, 4.0, 6.0);

并混合它们:

Foo mfoo(1, 4.0, 5);

对于intfloat来说, 双倍的存储空间大于enouh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM