我想在类声明的各个部分的std :: array模板参数中指定一个变量,如下所示:
class SetAngles
{
public:
constexpr int txSize() const { return 19; }
constexpr int rxSize() const { return ack.size(); }
void txParse(std::array<uint8_t, txSize()>& packet)
{
...
}
private:
std::array<uint8_t, txSize()> txPacket = {0xFA, 0x0E, 0x11, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
};
因此,如果我需要更改常量,则不必在各个地方进行很多次常量更改。显然,上面的内容不是constexpr的工作原理...我也尝试过使用公共成员变量而不是函数,但仍然失败。我收到编译器错误:
cannot call member function ‘constexpr int GimbalPacket::SetAngles::txSize() const’ without object
我知道#define语句可以工作,但是我希望将其封装在类中。有关如何执行此操作的任何建议?
答案 0 :(得分:0)
我无法像最初想要的那样在类中使用constexpr。最终只是将constexpr放在类之外,然后将它们都包装在命名空间中以完成封装。