0

我一直在尝试用不同的语言多次创建预定义的类,但我不知道怎么做。

这是我尝试过的方法之一:

public class Color{
    public float r;
    public float r;
    public float r;

    public Color(float _r, float _g, float _b){
        r = _r;
        g = _g;
        b = _b;
    }
    public const Color red = new Color(1,0,0);
}

这是在 C# 中,但我也需要在 Java 和 C++ 中做同样的事情,所以除非解决方案相同,否则我想知道如何在所有这些中做到这一点。

编辑:该代码不起作用,所以问题是针对所有三种语言的。我现在得到了 C# 和 Java 的工作答案,我猜 C++ 的工作方式相同,所以谢谢!

4

3 回答 3

3

在 Java 中,您可以使用枚举来完成此操作。

enum Colour
{
    RED(1,0,0), GREEN(0,1,0);

    private int r;
    private int g;
    private int b;

    private Colour( final int r, final int g, final int b )  
    {
        this.r = r;
        this.g = g;
        this.b = b;
    }

    public int getR()
    {
        return r;
    }

    ... 
}
于 2014-03-26T10:18:01.617 回答
2

我认为 C++ 中的一个好方法是使用静态成员:

// Color.hpp
class Color
{
  public:
    Color(float r_, float g_, float b_) : r(r_), g(g_), b(b_) {}
  private: // or not...
    float r;
    float g;
    float b;

  public:
    static const Color RED;
    static const Color GREEN;
    static const Color BLUE;
};

// Color.cpp
const Color Color::RED(1,0,0);
const Color Color::GREEN(0,1,0);
const Color Color::BLUE(0,0,1);

在您的代码中,您可以像访问它们一样Color c = Color::RED;

于 2014-03-26T10:34:27.247 回答
1

Java非常相似

public class Color {
    //If you really want to access these value, add get and set methods.
    private float r;
    private float r;
    private float r;

    public Color(float _r, float _g, float _b) {
        r = _r;
        g = _g;
        b = _b;
    }
    //The qualifiers here are the only actual difference. Constants are static and final.
    //They can then be accessed as Color.RED
    public static final Color RED = new Color(1,0,0);
}
于 2014-03-26T10:19:26.473 回答