1

假设我有如下代码。

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'可以吗?我想我在某处读到使用此方法创建实例将创建该类的两个实例。这样做的正确方法是什么?

4

2 回答 2

0

是颜色被实例化两次

  1. newCOlor 中的局部变量 color 和
  2. 静态颜色 a (因为您要返回一个对象,所以在静态变量定义/初始化时会发生成员方式的副本)。

一定要把 Color::a = Color::newColor(255,0,0); 在 cpp/cc 文件中,意思是不在头文件中。

于 2011-03-10T03:48:41.760 回答
0

试试这个尺寸:

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

Color a = {255, 0, 0};
于 2011-03-10T19:38:45.803 回答