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」を初期化してもよろしいですか? このメソッドを使用してインスタンスを作成すると、クラスのインスタンスが 2 つ作成されることをどこかで読んだと思います。これを行う正しい方法は何ですか?

4

2 に答える 2

0

サイズについてこれを試してください:

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

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

はい、色が 2 回インスタンス化されます

  1. newCOlor のローカル変数 color と
  2. 静的 Color a (オブジェクトを返すため、静的変数の定義/初期化でメンバーごとのコピーが発生します)。

Color::a = Color::newColor(255,0,0); を必ず入れてください。cpp/cc ファイルで、ヘッダー ファイルではないことを意味します。

于 2011-03-10T03:48:41.760 に答える