gpt4 book ai didi

c++ - 从驱动类模板值通过基类构造函数初始化基类数组成员变量

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:30 27 4
gpt4 key购买 nike

我有这段代码,我认为它应该可以工作,但事实并非如此!

 class base
{
std::array<uint8_t, 8> m_ID;
public:
base(std::array<uint8_t, 8> id) :m_ID(id)
{

}
}
template<char ...Ts>
class derived:base(Ts...)
{
}
class MyClass: public derived<'1','2','3','4','5','6','7','8'>
{
}

我该怎么做?我的想法是我可以从模板值中传递 ID 值。

我收到 MyClass 不完整的错误。 (不允许类型不完整)

最佳答案

你只需要正确调用基类构造函数:

#include <array>
#include <cstdint>

class base
{
std::array<std::uint8_t, 8> m_ID;
public:
base(std::array<std::uint8_t, 8> id) :m_ID(id)
{

}
};

template<char ...Ts>
class derived: public base
{
public:
derived() : base{ { Ts... } } { }
};

class MyClass: public derived<'1','2','3','4','5','6','7','8'>
{
};

int main() {
MyClass d;
}

请注意,在构造函数初始化列表中,需要内部一对大括号将单个 uint8_t 转换为数组。

关于c++ - 从驱动类模板值通过基类构造函数初始化基类数组成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776643/

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