gpt4 book ai didi

c++ - 成员初始值设定项不命名非静态数据成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:28 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试获取一个开源 C++ 项目以在 x 代码中编译。这段代码的最后两行:

template<typename T>
struct TVector3 : public TVector2<T> {
T z;
TVector3(T _x = 0.0, T _y = 0.0, T _z = 0.0)
: TVector2(_x, _y), z(_z)

正在抛出错误:成员初始值设定项未命名非静态数据成员

基于(member initializer does not name a non-static data member or base class),我尝试将代码更改为:

template<typename T>
struct TVector3 : public TVector2<T> {
T z;
TVector3(T _x = 0.0, T _y = 0.0, T _z = 0.0)
: TVector2(_x, _y)
{ z(_z);}

但是我得到了同样的错误。这是父类(super class) Vector2 的代码。我该如何解决这个错误?

struct TVector2 {
T x, y;
TVector2(T _x = 0.0, T _y = 0.0)
: x(_x), y(_y)
{}
double Length() const {
return sqrt(static_cast<double>(x*x + y*y));
}
double Norm();
TVector2<T>& operator*=(T f) {
x *= f;
y *= f;
return *this;
}
TVector2<T>& operator+=(const TVector2<T>& v) {
x += v.x;
y += v.y;
return *this;
}
TVector2<T>& operator-=(const TVector2<T>& v) {
x -= v.x;
y -= v.y;
return *this;
}
};

最佳答案

在一个类模板中,只有它自己的名字被注入(inject)以供在没有模板参数的情况下使用。你需要这个:

template<typename T>
struct TVector3 : public TVector2<T> {
T z;
TVector3(T _x = 0.0, T _y = 0.0, T _z = 0.0)
: TVector2<T>(_x, _y), z(_z)

关于c++ - 成员初始值设定项不命名非静态数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19136647/

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