注:我正在使用 C++11
假设我有一个类(class) foo
带有公共(public)变量 bar
可以是浮点数或整数。 bar
的类型在分配时确定,如下所示:
foo object_name;
object_name.weight() = value
如果
value
是一个整数,那么 object_name.weight()
是一个整数,如果 value
是一个浮点数,那么 object_name.weight()
是一个浮点数。一种可能性是有两个类
foo_i
和 foo_f
与 bar
分别输入为 int 和 float;但这很不方便,尤其是当 foo_i
和 foo_f
基本上是彼此的克隆,它们之间只有类型差异。有没有办法指定
bar
的类型作为int
或 float
在单个类的范围内?
最佳答案
为了只编写一次类主体,您可以模板类 foo
关于 bar
的类型, 然后使用两个 typedef 来简化后续的使用。例子:
template<typename TBar> class foo {
public: TBar bar;
};
typedef foo<int> foo_i;
typedef foo<float> foo_f;
对于 C++ 新手来说,需要注意的是,这种元编程技术实际上会使编译器生成同一类的两个不同版本,即,从生成的二进制文件的角度来看,它相当于用两种不同的类型编写类体两次
bar
.
关于c++ - 在 C++ 中为公共(public)类变量声明两种或多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60975962/