gpt4 book ai didi

c++ - 有没有允许这种语法的常用 C++ 编译器?

转载 作者:行者123 更新时间:2023-11-27 23:12:32 24 4
gpt4 key购买 nike

<分区>

我是 C++ 的新手,正在尝试获取 this开源程序(为/在 linux 中开发)在 OS X 上的 xcode 中编译和运行。

当我编译并运行代码时,我遇到了很多错误(超过 xcode 愿意计算的错误),例如 use of undeclared identifier 'x'use of undeclared identifier 'y'

这是抛出错误的代码示例:

template<typename T>
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;
}
};
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)
{}
double Length() const {
return sqrt(static_cast<double>(x*x + y*y + z*z)); //use of undeclared identifier x
}
double Norm();
TVector3<T>& operator*=(T f) {
x *= f;
y *= f;
z *= f;
return *this;
}

在我看来,作为一个没有经验的 C++ 程序员,x 和 y 似乎只是未声明的局部变量。我可以让编译器通过简单地声明变量来消除错误,就像这样......

struct TVector3 : public TVector2<T> {
T z;
T x;
T y;

但是,这些错误的数量之多让我觉得

  1. 可能有(相当常见的)C++ 编译器版本允许您将变量 x 声明为 _x。这可以解释为什么我下载的源代码有这么多编译器错误。
  2. 也许我得到了一个“坏批处理”的源代码,我不应该浪费时间编译它,因为源代码有些古怪。

有经验的 C++ 开发人员能否解释可能发生的情况?

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