c++ - 常量存储 C++?

标签 c++ storage

我试图在我的 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 GeoPosition
    {
       int  a,b,c,d;
    }

class GeoLocatedElement
{
protected:
   GeoPosition location;
public:
   GeoLocatedElement(GeoLocation loc);
}

class Region:public GeoLocatedElement
{
...
}

..

一个好的解决方案是拥有一个父类(super class),例如 GeoPositionedElement,它有一个地理定位结构的实例变量(不是常量!!!)。您的父类(super class)的构造函数接受这样的地理位置实例并将信息存储到其本地成员中。

此外,您还可以为所需的每种子元素创建子类,例如地区、城市、房屋、湖泊等。此外,每个子类都有一个包含元素的成员。如果你想限制它,那么相应地定义它,否则允许添加 GeoPositionedElements。请在此处查看有关如何执行此操作的类似示例:using Composite Pattern to count the number of people in the world .

最后,您需要通过创建结构元素的实例来设置它,并且在这样做时,使用地理位置调用它们的构造函数。您可以以与所示类似的方式存储地理位置,但以数组形式存储。更好的方法是通过文件(例如 CSV 或 JSON)提供信息并解析它。

关于c++ - 常量存储 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263598/

相关文章:

将值返回到 switch 语句的 C++ 函数

java - 处理跨平台程序的 COM 端口的最佳方法?

python - 使用 REST API python 将页面 blob 上传到 azure

c - 如何在 c 中执行多个读/写 HDD/USB 字节

c++ - 用于将字符串放入整数的 cin 失败标志

c++ - 在 C++ 中使用和包含有什么区别?

c++ - 如何为 OpenNI2 构建 PCL?

android - SD卡删除通知,它是如何完成的?广播还是服务?

linux - 恢复已清除的文件内容

database - Azure 上的游戏记分牌