我一直收到错误:
No viable overloaded operator[] for type 'vector<bitset<8>>'
我正在尝试执行某些操作,而此十六进制值未包含在我的向量中。我想错误与我试图检查元素的方式有关。如果有人能告诉我如何正确检查一个定义常数的向量,那将是很好的。这是我的基本代码:
using namespace std;
//Variables I am trying to compare
#define HALT_OPCODE 0x19;
vector<bitset<8> > memory(65536);
bitset<16> PC = 0;
int main(int argc, const char * argv[])
{
//Error Occurs here
while(memory[PC] != HALT_OPCODE){
fetchNextInstruction();
executeInstruction();
}
return 0;
}
答案 0 :(得分:0)
我认为这种结构没有任何意义
while(memory[PC] != HALT_OPCODE){
cout << "Do Something";
但无论如何你必须写
while(memory[PC.to_ulong()].to_ulong() != HALT_OPCODE){
cout << "Do Something";
或者
while(memory[PC.to_ulong()] != HALT_OPCODE){
cout << "Do Something";
因为类std :: bitset中存在非显式转换构造函数。