gpt4 book ai didi

c++ - 如何定义模板类的 static const 变量

转载 作者:行者123 更新时间:2023-12-02 08:08:35 25 4
gpt4 key购买 nike

我正在尝试使用预定义的向上、向右和向前的静态常量创建一个 vector 类,因为这些在所有情况下都应该相同。这应该如何定义?这是否可能?

我正在尝试做这样的事情:

template <class T> class vec3
{
public:
vec3(T x = 0, T y = 0, T z = 0) :
x(x),
y(y),
z(z)
{
}

static const vec3<T> right;
static const vec3<T> up;
static const vec3<T> forward;

T x, y, z;
}

cpp:

#include "vec3.h"

template <typename T>
const vec3<T>::right(1, 0, 0);

template <typename T>
const vec3<T>::up(0, 1, 0);

template <typename T>
const vec3<T>::forward(0, 0, 1);

这会导致语法错误。

最佳答案

应该是(全部在 header 中(如果您想将声明与定义分开,可以使用 .inl 或 .hxx)):

template <class T> class vec3
{
public:
vec3(T x = 0, T y = 0, T z = 0) :
x(x),
y(y),
z(z)
{
}

static const vec3 right;
static const vec3 up;
static const vec3 forward;

T x, y, z;
};

template <typename T> const vec3<T> vec3<T>::right(1, 0, 0);
template <typename T> const vec3<T> vec3<T>::up(0, 1, 0);
template <typename T> const vec3<T> vec3<T>::forward(0, 0, 1);

Demo

关于c++ - 如何定义模板类的 static const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com