【发布时间】:2018-01-15 13:03:57
【问题描述】:
我试图在我的 cpp 项目中的某处存储几个常量。稍微看了一下,方法似乎是在.h文件中定义变量并在.cpp文件中声明。
//.h
class Region {
public:
static const int CC;
};
//.cpp
const int Region::CC= 12;
我了解到要解决静态类内定义错误,可以使用constexpr。
我需要存储的是区域(想想坐标/矩形),基本上是坐标系中的 2 个坐标。我希望能够分类和使用一个区域,但也可以使用它的子区域。
伪代码示例;
Country(100, 100, 900, 900){
City(150, 150, 200, 200) {
House1(155, 155, 160, 160)
House2(170, 170, 180, 180)
}
Lake(300, 300, 400, 400)
}
区域可以“无限期”堆叠(假设最多嵌套 10 个)。我可以像这样访问它的区域;
Country //returns 100,100,900,900
Country.City //returns 150,150,200,200
Country.City.House1 //returns 155,155,160,160
Country.Lake //returns 300,300,400,400
我将如何创建一个允许这种存储/访问的结构?我在想也许是命名空间,但出现的问题是命名空间也应该存储坐标。
【问题讨论】:
-
类似
struct S {std::string name; int x, y, w, h; std::vector<S> subregions;};? -
有什么问题?你在问什么似乎不是特别清楚。
-
aside:静态 const 原语可以在标题中包含它们的值。
-
在我看来,静态 const 变量不是您想要的。这意味着您将被困在一个国家,一个城市,一所房子。当然,您可以拥有 House1 和 House2,但这是非常糟糕的设计,因为当您到达 House1000 时,您会非常厌倦。