【发布时间】:2019-03-03 04:06:12
【问题描述】:
我正在生成基于模式的 C++ 代码。存在实体,每个实体都包含属性,每个属性都具有相应的数据类型。现在的问题是其中一些属性是“可选的”,这意味着它们不必是类声明的一部分。但是,在 C++ 中,某些东西要么是类的成员,要么不是类的成员,没有诸如“可选数据成员”之类的概念。
实体将是类名,属性将是类成员。我不确定如何表示现有 C++ 概念中标记为“可选”的属性。
【问题讨论】:
-
std::optional还是指针? -
std::optional 到底是做什么的?它是 C++17 规范的一部分。我不认为我会使用 C++17 规范。
-
@nmd_07 C++17 是最新发布的规范,应该用于新代码。
optional完全按照您的想法行事。 -
@BartekBanachewicz 我会更准确地说“语义正是您的想法”。从名字上看,幕后的东西根本不明显。它是堆分配还是包含可选对象?它是使用哨兵值还是需要额外的空间?它是否可能依赖于
T(甚至是可定制的)?从语义的角度来看,这并不重要,但您在答案中展示了由此产生的权衡。
标签: c++ class schema code-generation