在CPP文件中实现并在另一个类中使用的c++结构体

C++ struct that is implemented in CPP file and used in another class

本文关键字:结构体 c++ 另一个 CPP 文件 实现      更新时间:2023-10-16

在一个类中实现结构并在另一个类中使用的最佳方法是什么?

Structs.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

我看你的设计不对。将"Black"answers"White"定义为不同的类,它们的对象具有RGB值。然后你想要一个有白色值/属性的"黑色"?这听起来就像给汽车下定义,拆掉轮子,给它装上翅膀和320个座位,然后假装波音757仍然是一辆汽车。

您通常需要的内容应该如下:

struct Color {
  unsigned char r;
  unsigned char g;
  unsigned char b;
};
Color black = {0,0,0};
Color white = {255,255,255};
Color blue = {0,0,255};

也许我没有理解这个问题,但我会说演员应该White():…和黑色():……

问题是构造函数应该与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();