0

あるクラスで構造体を作成し、そこに実装して別のクラスで使用する最良の方法は何ですか?

構造体.h

struct White{
   unsigned char r;
   unsigned char g;
   unsigned char b;
   Color() : r(255), g(255), b(255){}
};
struct Black{
   unsigned char r;
   unsigned char g;
   unsigned char b;
   Color() : r(0), g(0), b(0){}
};
White white; //works fine

Black black = {255, 255, 255}; //*error: data member initializer is not allowed!* (because of unsigned char maybe?)
**OR**
Black black; black.r = 255; //*error: this declaration has no storage class or type specifier!*

anotherClass.cpp

#include "Structs.h"
Structs *str = new Structs();
str->white.r //works, is 255
str->black.r //should be 255 too
4

3 に答える 3

0

問題はコンストラクターにあり、struct_name と同じにする必要があります。

試す

struct White{
   unsigned char r;
   unsigned char g;
   unsigned char b;
   White() : r(255), g(255), b(255){}
   void show(void)
   {
        cout << "RED:       " << r
             << "\tGreen:   " << g
             << "\tBlack:   " << b << endl;
   }
} white;

struct Black{
   unsigned char r;
   unsigned char g;
   unsigned char b;
   Black() : r(0), g(0), b(0){}
   void show(void)
   {
        cout << "RED:       " << r
             << "\tGreen:   " << g
             << "\tBlack:   " << b << endl;
   }
} black;

black.show();
white.show();
于 2013-04-03T09:04:03.753 に答える
0

たぶん私は質問を理解していませんでしたが、ctor は White(): ... と Black():... である必要があると思います。そうしないと、ヘッダーがコンパイルされません。

于 2013-04-03T08:52:22.400 に答える