gpt4 book ai didi

C++ 预定义实例

转载 作者:行者123 更新时间:2023-11-30 04:19:36 25 4
gpt4 key购买 nike

我正在设计一个 Vector3D 类,并希望能够轻松访问一些常用的 vector ,例如笛卡尔基 vector 和原点。下面是一种使用静态成员的方法。这是实现这一目标的正确方法吗?性能将是一个关键点。

vector.h

#include <iostream>

class Vector3D {

public:
Vector3D(double x=0.0, double y=0.0, double z=0.0) :
x_(x),
y_(y),
z_(z) {};

inline void print() const {
std::cout << x_ << " " << y_ << " " << z_ << std::endl;
}

// Predefined Vectors
static Vector3D ZERO;
static Vector3D X;
static Vector3D Y;
static Vector3D Z;

double x_, y_, z_;
};

vector .cpp

#include "vector.h"

// Predefined vectors
Vector3D Vector3D::ZERO = Vector3D(0.0f, 0.0f, 0.0f);
Vector3D Vector3D::X = Vector3D(1.0f, 0.0f, 0.0f);
Vector3D Vector3D::Y = Vector3D(0.0f, 1.0f, 0.0f);
Vector3D Vector3D::Z = Vector3D(0.0f, 0.0f, 1.0f);

类可以这样使用:

main.cpp

#include "vector.h"

int main()
{
Vector3D o = Vector3D::ZERO;
Vector3D x = Vector3D::X;
Vector3D y = Vector3D::Y;
Vector3D z = Vector3D::Z;

o.print();
x.print();
y.print();
z.print();

return 0;
}

最佳答案

您缺少 const 标识符。您不希望有人不小心修改零 =)

你也可以使用静态方法:

struct Vector3D
{
//...

static Vector3D const & ZERO()
{
static Vector3D zero_(0,0,0);
return zero_;
}
};

关于C++ 预定义实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15739496/

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