gpt4 book ai didi

c++ - 静态定义列表

转载 作者:行者123 更新时间:2023-11-30 04:36:03 25 4
gpt4 key购买 nike

我需要用 C++ 创建描述 SQL 表的定义列表。目前我是这样做的,因为它实际上不需要是一个真实的对象,而且以这种方式初始化相当方便:

namespace Table_name
{
static ColumnList Cols("Table_name");
static const Column Id ("Id INTEGER PRIMARY KEY", Cols);
static const Column Col_name ("Col_name TEXT", Cols);
}

(省略了外部命名空间、using 等)

我将 Cols 传递给每个构造函数,以便每个 Column 都在列表中注册。我将它用作 Table_name::Col_nameTable_name::Cols 来获取列表。目前它运行良好,但我意识到由于多线程访问最终可能发生的静态变量可能会出现一些问题。或者这些问题只与局部静态变量有关?..

我怎样才能重新处理它以使其安全/更好,并且仍然具有同样方便的定义和对列变量及其列表的访问?我希望每一列都在一个地方定义,所以枚举、“普通”变量等都不起作用。另外,您认为在这种情况下使用 DEF_COL(Col_name, "..."); 这样的宏是否合适?谢谢。

最佳答案

你可以为此使用单例来确保你没有任何与静态初始化的未定义顺序相关的问题

你也可以查看MySql++库检查他们如何解决表结构定义问题

关于c++ - 静态定义列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com