小编she*_*eep的帖子

将临时结构作为模板参数传递

我正在创建一个矢量类,并试图找出重用不同大小向量的最大代码量的方法.这是一个基本的例子:

template<typename T, unsigned int D>
class Vector
{
public:
    union {
        T v[D];
        struct {
            /* T x;
             * T y;
             * T z;
             * T w;
             */
        };
    };

    Vector()
    {
        for(unsigned int i=0; i<D; ++i)
            (*this)[i] = T(0);
    }
    Vector(T scalar)
    {
        for(unsigned int i=0; i<D; ++i)
            (*this)[i] = scalar;
    }

    inline T operator[](int i) { return (*this).v[i]; }
};
Run Code Online (Sandbox Code Playgroud)

我希望成员变量可以公开访问.例如:

Vector<float,2> vec;
printf("X: %.2f, Y: %.2f\n", vec.x, vec.y);
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的事情:

template<typename T>
class Vector2 : public Vector<T,2, …
Run Code Online (Sandbox Code Playgroud)

c++ templates struct

6
推荐指数
1
解决办法
430
查看次数

标签 统计

c++ ×1

struct ×1

templates ×1