gpt4 book ai didi

c++ - C++中的继承特性

转载 作者:行者123 更新时间:2023-11-27 22:32:25 26 4
gpt4 key购买 nike

我正在用 C++ 创建一个特征,它将我创建的另一个特征作为模板输入。但是,当我运行这段代码时,出现以下编译器错误:

error: wrong number of template arguments (1, should be 2) template<\Measure<\int v, Unit u> a>

代码如下:

enum class Unit { km, m, cm };


template<int v, Unit u>
struct Measure
{
public:
static const int value = v;
static const Unit unit = u;
};


template< Measure<int v, Unit u> a>
struct Measure_add
{
public:
static const int value = a::value;
static const Unit unit = a::unit;
};

用法应该是:

std::cout << Measure_add< Measure<4, Unit::m> >::value << std::endl;

这应该给出:

4

最佳答案

Measure_add 可以通过以下方式从 Measure 继承:

template<class>
struct Measure_add;

template<int v, Unit u>
struct Measure_add<Measure<v, u>> : Measure<v, u> {};

static_assert(Measure_add<Measure<4, Unit::m>>::value == 4);

关于c++ - C++中的继承特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308474/

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