c++ - 错误 C2059 : syntax error : '.'

标签 c++

我正在努力让这个功能发挥作用,但我一直在努力

error C2059: syntax error : '.'

在我调用 is_declared 的两个 declare() 函数体的那一行,我想不通。我知道这与 is_declared 有关,但我遇到了麻烦。


class Variable {    
public: 
    std::string name;
    double value;
    char type;      
    Variable(std::string n, double v) :name(n), value(v), type('v') { }
    Variable(std::string n, double v, char a) :name(n), value(v), type('c') { }
};

class Symbol_table {
public:
    Symbol_table();
    double get(std::string s);
    void set(std::string s, double d);
    bool is_declared(std::string s);
    double declare(std::string var, double val);
    double declare(std::string var, double val, char c);
private:
    std::vector<Variable> var_table;
};
Symbol_table::Symbol_table() {}
double Symbol_table::get(std::string s)     
{
for (int i = 0; i<var_table.size(); ++i)
    if (var_table[i].name == s) return var_table[i].value;
error("get: undefined name ",s);
}
void Symbol_table::set(std::string s, double d) 
{
for (int i = 0; i<=var_table.size(); ++i)
    if (var_table[i].name == s) {
        if (var_table[i].type == 'c') error("set_value: Cannot change a constant's value");
        var_table[i].value = d;
        return;
    }
error("set: undefined name ",s);
}
double Symbol_table::declare(std::string var, double val)
{//error here
    if (Symbol_table.is_declared(var)) error(var," declared twice");
    var_table.push_back(Variable(var,val));
    return val;
}
double Symbol_table::declare(std::string vari, double valu, char c)
{//error here
    if (Symbol_table.is_declared(vari)) error(vari," declared twice");
    var_table.push_back(Variable(vari,valu,c));
    return valu;
}
bool Symbol_table::is_declared(std::string s)   
{
for (int i = 0; i<var_table.size(); ++i)
    if (var_table[i].name == s) return true;
    return false;
}

最佳答案

语法 Symbol_table.is_declared 在该上下文中不是有效的 C++。很可能你打算写

if (this->is_declared(var)) error(var," declared twice");

如果您愿意,您也可以省略 this->,这是风格问题。

关于c++ - 错误 C2059 : syntax error : '.' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763222/

相关文章:

c++ - 如何修复 "error: call to ' abs' 不明确”

c++ - rapidjson pretty print 使用 JSON 字符串作为编写器的输入

c++ - 这是错字还是我遗漏了什么?

c++ - 为什么这个非常简单的 return std::move(thread handle) 会失败?

c++ - 如何从 C++ 中的另一个类迭代获取数据?

C++:具有多种语言的字符串

c++ - 从 Fortran 调用 C++(链接问题?)

c++ - 递归模板解释C++

c++ - 错误 C2064 : term does not evaluate to a function taking 1 argument

c++ - 读取 XML 文件中存储的业务规则的优雅方式