【问题标题】:Expected primary-expression before ‘&’ token [closed]“&”标记之前的预期主表达式[关闭]
【发布时间】:2018-11-11 22:12:21
【问题描述】:

我收到这个错误,让我难以继续编码,因为我尝试并尝试解决它,但无法理解错误的含义(我在 Stackoverflow 中查看了类似的问题)。

我不明白为什么,如果我将一组 Node 对象声明为一种数据类型,我会收到这些错误,代码:

point p(p.get_x(),p.get_y());


Node a(p,0); 

set<Node&> visited_nodes;

错误:

error: expected primary-expression before ‘&’ token
         set<Node&> visited_nodes;
                 ^
error: expected primary-expression before ‘>’ token
         set<Node&> visited_nodes;

谢谢

【问题讨论】:

    标签: c++ oop object compilation set


    【解决方案1】:

    您不能将引用存储在容器中。您应该存储指针或对象。

    编辑: 聊天结束后,我们发现了原因。 由于using namespace std;,他的名字有冲突。

    所以我提议:

    std::set<Node> visited_nodes;
    

    错误消失了。

    【讨论】:

    • 虽然是真的,但问题是关于语法错误。
    • 错误是相关的。由于 std::set 是一个模板类,我认为解决他的问题最清晰的方法是建议他不能存储引用。更多细节可能会令人困惑。
    • 我根本看不出错误是如何相关的。将引用作为模板参数传递是完全合法的语法,并且编译器正在挂起解析。这是一个问题的唯一原因是由于对std::set(和其他标准容器)关于它们支持哪些类型的特定要求。
    • @LuisGP 当我将其更改为:setvisited_nodes; ,我收到此错误:“>”标记之前的预期主表达式
    • @AER 那么@aschepler 可能是对的。您是否包含setusing std::set
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多