我的问题是为什么processSymbol(const string, enumDataType)
编译器认为我正在传递一个 std::string&。我processSymbol(const string, enumDataType)
之前在我的代码中使用过并且按预期工作,但是在这个函数中我得到了这个错误
error: call of overloaded 'processSymbol(std::string&, symsErrorCode&)' is ambiguous|
note: candidates are:
note: void processSymbol(std::string, symsErrorCode&)|
note: void processSymbol(std::string, symsErrorCode)|
这是我想知道的功能。
void processSearchForSymbols(ifstream & inSyms, BST & symTable){
symsErrorCode symsError;
string symbol;
while(inSyms >> symbol){
symsError = NO_ERROR;
processSymbol(symbol, symsError);
}
}
processSymbol()
我认为应该如何编译的函数是这样的:
void processInsertSymbolData(ifstream & inFile, BST & symTable){
string symbol, value, rFlag, fourCharSymbol;
symsErrorCode symsError;
while(inFile >> symbol >> value >> rFlag){
symsError = NO_ERROR;
processSymbol(symbol, symsError);
if(symsError == NO_ERROR)
{
fourCharSymbol = createFourCharSymbol(symbol);
processValue(value, symsError);
if(symsError == NO_ERROR)
{
processRFlag(rFlag, symsError);
if(symsError == NO_ERROR)
{
insertIntoSymTable(symsError, fourCharSymbol, value, rFlag, symTable);
}
}
}
errorOutput( symsError, symbol, fourCharSymbol, value);
}
return;
}
这是processSymbol(const string symbol, symsErrorCode symsError)
功能
void processSymbol(const string symbol, symsErrorCode symsError){
if(symbol.length() > 10)
{
symsError = LENGTH;
}
else if(!isalpha(symbol[0]))
{
symsError = START_CHAR;
}
else
{
for(unsigned int i = 1; i < symbol.length(); i++)
{
if( !isalnum(symbol[i]) && symbol[i] != '_' )
{
symsError = INVALID_CHAR;
}
}
}
return;
}