类型'vector <bitset <8>&gt;'没有可行的重载operator [] C ++ </位集<8>

时间:2014-10-25 18:12:17

标签: c++ vector hex bitset

我一直收到错误:

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;

 }

1 个答案:

答案 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中存在非显式转换构造函数。