gpt4 book ai didi

C++ 错误 : no viable conversion from 'mapped_type' to 'int'

转载 作者:行者123 更新时间:2023-11-28 00:56:47 29 4
gpt4 key购买 nike

我正在尝试按如下方式从 C++ STL 实现映射:

#include <string>
#include <iostream>
#include <map>
using namespace std;
#include "assembler.h"

// This Class makes use of the Map Template from the Standart Template Library
// All addresses are stored as numerical (Dec) integers

SymbolTable::SymbolTable() { // Constructor
map <string, int> symbolTable;
int address = 0;
}

void SymbolTable::addEntry(string symbol, int address) {
symbolTable[symbol] = address;
address++;
}

// Returns true if symbolTable already contains symbol
bool SymbolTable::contains(string symbol) {
if (symbolTable.find(symbol) == symbolTable.end()) { return true; }
else { return false; }
}

int SymbolTable::getAddress(string symbol) {
return symbolTable[symbol];
}

我试着编译它

c++ *.cpp -0 assembler.out

我收到以下错误消息:

symboltable.cpp:57:9: error: no viable conversion from 'mapped_type' (aka 'std::basic_string<char>') to 'int'
return symbolTable[symbol];
^~~~~~~~~~~~~~~~~~~
1 error generated.

我在网上搜索了这个错误,我得到的只是与 STL 相关的错误报告,我无法弄清楚这些报告是否与我遇到的问题相同,如果是的话如何解决。我做错了什么吗?

我已经尝试(可能是愚蠢的)将有问题的行打字为

return (int) symbolTable[symbol];

感谢您的帮助。

我的头文件将类声明为:

class SymbolTable {
public:
SymbolTable();
void addEntry(string, int);
bool contains(string);
int getAddress(string);
private:
map <string, string> symbolTable;
int address;
};

最佳答案

这个:

SymbolTable::SymbolTable() { // Constructor
map <string, int> symbolTable;
^
^

是函数局部变量,不是成员变量。它与您正在访问的 symbolTable 不同getAddress,大概一个成员变量。您没有显示类主体,但我猜它的定义不同。

关于C++ 错误 : no viable conversion from 'mapped_type' to 'int' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711384/

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