gpt4 book ai didi

c++ - 使用 std::bitset

转载 作者:行者123 更新时间:2023-11-28 08:12:23 29 4
gpt4 key购买 nike

有一个类定义和一些测试某些属性的 bool 函数

  class MemCmd
{
friend class Packet;
public:
enum Command
{
InvalidCmd,
ReadReq,
ReadResp,
NUM_MEM_CMDS
};
private:
enum Attribute
{
IsRead,
IsWrite,
NeedsResponse,
NUM_COMMAND_ATTRIBUTES
};

struct CommandInfo
{
const std::bitset<NUM_COMMAND_ATTRIBUTES> attributes;
const Command response;
const std::string str;
};
static const CommandInfo commandInfo[];
private:
bool
testCmdAttrib(MemCmd::Attribute attrib) const
{
return commandInfo[cmd].attributes[attrib] != 0;
}
public:
bool isRead() const { return testCmdAttrib(IsRead); }
bool isWrite() const { return testCmdAttrib(IsWrite); }
bool needsResponse() const { return testCmdAttrib(NeedsResponse); }
};

问题是如何在调用 needsResponse() 之前将 NeedsResponse 设置为 true 或 false

请注意 attributesstd::bitset 类型

更新:

我写了这个函数:

void
setCmdAttrib(MemCmd::Attribute attrib, bool flag)
{
commandInfo[cmd].attributes[attrib] = flag; // ERROR
}

void setNeedsResponse(bool flag) { setCmdAttrib(NeedsResponse, flag); }

但是我得到这个错误:

error: lvalue required as left operand of assignment

最佳答案

来自评论:

这里有两个问题

  1. const 的数据成员必须在类构造函数中初始化。
  2. 如果成员是 const,则以后无法更改它们。

因此,(至少)初始化应该具有常量值的成员。从您打算稍后更改的成员中删除 const

关于c++ - 使用 std::bitset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687106/

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