从静态函数创建类对象

时间:2011-03-10 03:37:33

标签: c++ class visual-c++ instance static-variables

假设我有以下代码。

class Color
{
static Color a;
public:
static Color newColor(int r,int g,int b){
        Color color;
        color.setR(r);
        color.setG(g);
        color.setB(b);
        return color;
    }
}

使用'Color a = Color :: newColor(255,0,0);'初始化静态变量'a'是否正常? 我想我在某处读到使用此方法创建实例将创建该类的两个实例。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

是Color实例化两次

  1. newCOlor中的局部变量颜色和
  2. 静态颜色a(因为要返回一个对象,所以在静态变量定义/初始化时会发生成员副本)。
  3. 一定要把Color :: a = Color :: newColor(255,0,0);在cpp / cc文件中,意思是不在头文件中。

答案 1 :(得分:0)

尝试尺寸:

struct Color
{
    int   R, G, B;
};

Color a = {255, 0, 0};