创建我自己的'数据类型'

时间:2010-12-15 14:27:11

标签: c++

我希望能够创建一个具有3个浮点数(x,y,z)的类型。我试过了:

typedef struct
{
 float x;
 float y;
 float z;
} Vertex;

但那没用。

这是否必须在main可以看到的地方声明?我将如何为我所制作的类型创建getter方法和其他方法?

3 个答案:

答案 0 :(得分:4)

我是如何用C ++完成的。请参阅main()以获取示例用法。 N.B。这尚未编译或测试。

#include <iostream>

class Vertex
{
public:
  // Construction
  Vertex(float x,float y, float z) : x_(x), y_(y), z_(z) {}

  // Getters
  float getX() const {return x_;}
  float getY() const {return y_;}
  float getZ() const {return z_;}

  // Setters
  void setX(float val) {x_ = val;}
  void setY(float val) {y_ = val;}
  void setZ(float val) {z_ = val;}
private:
  float x_;
  float y_;
  float z_;
};

int main()
{
  Vertex v(6.0f,7.2f,3.3f);
  v.setZ(7.7f);
  std::cout < "vertex components are " << v.getX() << ',' << v.getY() << ',' << v.getZ() << std::endl;
}

答案 1 :(得分:1)

  

这是否必须在main可以看到的地方声明?

是。通常,类或结构在头文件中声明,您在#include中使用它所使用的任何翻译单元(c文件)。

答案 2 :(得分:0)

使用C,这对我有用

typedef struct { float x; float y; float z; } Vertex;

int main(void) {
  Vertex a = {42, -42, 0};
  if (a.x + a.y + a.z == 0) return 1; /* warning about comparing floating point values */
  return 0;
}