【问题标题】:Classes in C++ compilation errorC++ 编译错误中的类
【发布时间】:2015-04-21 21:17:06
【问题描述】:

有人知道我为什么会收到这个错误吗?在发帖之前我真的很努力。非常感谢。

我来了

"In file included from familyRunner.cpp:7:0:
   familytree.h:22:40: error: expected identifier before ‘-’ token
    QuadraticHashTable<Human> hash_table(-1, 50000);" error.

class FamilyTree
{
public:
  FamilyTree(Family *families, int familyCount);
  void runQueries(Query *queries, Person *answers, int queryCount);
  QuadraticHashTable<Human> hash_table(-1, 50000);
};

【问题讨论】:

  • 抱歉,我在发布时遇到了问题!已经上线了
  • 您是否缺少 QuadraticHashTable&lt;&gt; 的包含或转发声明?
  • 我在顶部添加了#include。 #include "QuadraticProbing.h" #include "familyRunner.h"
  • 你是否在 gcc 中包含-std 选项来告诉它启用 C++11 模式? hash_table 类内初始化器将需要它。
  • @AndyBrown 我认为类初始化程序无论如何都不能使用括号格式:它必须是大括号或等式初始化程序。 (在这种情况下,无论如何我都不会使用类内初始化程序;它在标头中暴露了太多信息。)

标签: c++ file class header


【解决方案1】:

这条线看起来不对:

QuadraticHashTable<Human> hash_table(-1, 50000);

不能用 () 进行内联初始化,必须使用 {} 或 = ,例如:

QuadraticHashTable<Human> hash_table {-1, 50000};

或者您可以在定义了 FamilyTree 构造函数的 cpp 文件中对其进行初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多