我在Stroustrup http://www.stroustrup.com/Programming/calculator08buggy.cpp
中找到第三个错误时遇到了问题到目前为止,我已经在struct Token中添加了这个以获取要编译的代码:
Token(char ch, string s) :kind(ch), name(s) { }
在Token_stream ::得到我改变
while(cin.get(ch) && (isalpha(ch) || isdigit(ch))) s=ch;
为:
while(cin.get(ch) && (isalpha(ch) || isdigit(ch))) s+=ch;
和此:
if (s == "quit") return Token(name);
为:
if (s == "quit") return Token(quit);
但我无法找到最后一个错误。我似乎无法让代码破解,在重新阅读代码几次后,我再也找不到错误。
答案 0 :(得分:1)
for (int i = ...
//已签名与未签名的比较(使用size_t代替)
i <= names.size()
//它将在最后一次有效之后访问元素
第139行还有未使用的变量
Token :: get(),double get_value(std :: string)和double primary():至少有一条路径没有返回...