我想制作多个结构,具有不同的设置......!它们都拥有相同的变量(相同的名称等)!但不同的实施!这个设置应该可以从另一个班级到达......这是最好的方法吗?或者我做错了什么?
A.H:
class A
{
};
struct Color{
unsigned char r;
unsigned char g;
unsigned char b;
};
extern struct Settings settings;
A.cpp
struct settings{
Color firstcolor = {0,0,0}; //error: data member initializer is not allowed
Color secondcolor = {255,255,255}; //error: data member initializer is not allowed
};
struct anothersettings{
Color firstcolor = {255,255,255}; //error: data member initializer is not allowed
Color secondcolor = {0,0,0}; //error: data member initializer is not allowed
};
B.cpp
#include "A.h"
dosomethingwith(settings);
答案 0 :(得分:3)
似乎你在struct
类型和该类型的对象之间感到困惑。 struct
的重点在于它描述了该类型的对象的外观。如果您创建两个struct
成员完全相同(就像您使用settings
和anothersettings
所做的那样),那么您可能犯了一个大错误。相反,您应该只有一个struct
,然后是该类型的多个对象。
如果只有struct Settings
这样的话会好得多:
struct Settings {
Color firstcolor;
Color secondcolor;
};
然后你可以创建这种类型的对象,根据需要设置颜色:
Settings settings1;
settings1.firstcolor.r = 0;
settings1.firstcolor.g = 0;
// And so on...
Settings settings2;
settings2.firstcolor.r = 255;
settings2.firstcolor.g = 255;
// And so on...
事实上,有一种更好的方法可以使用聚合初始化来编写它:
Settings settings1 = {{0, 0, 0}, {255, 255, 255}};
Settings settings2 = {{255, 255, 255}, {0, 0, 0}};
然后你可以得到一个带Settings
参数的函数:
void soSomething(Settings);
然后你可以这样打电话:
doSomething(settings1);
// or
doSomething(settings2);