gpt4 book ai didi

c++ - 实例前预期错误 ';'

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:05 24 4
gpt4 key购买 nike

快速了解我是如何做到这一点的。

  1. 创建结构
  2. 创建了 .cpp 文件
  3. 使用 CMake 创建 Make 文件
  4. 运行 Make 并收到错误

我正在尝试编译以下代码:

#include <iostream>
using namespace std;

enum UnitType { Meter, Inch };
class Meter {
double value;

public:
Meter(double value) : value(value) {}
double convertTo(UnitType unit) {
if (unit == Inch) {
return value * 39.3700787;
}
};
};

int main (int argc, char *argv[])
{
try
{
Meter meter(1.0);
}
catch (int e) {
cout << "exception " << e << endl;
}

return 0;
}

但是,我收到以下错误:

$ make[100%] Building CXX object CMakeFiles/convert-length.dir/convert-length.cpp.o/convert/length/convert-length.cpp: In function ‘int main(int, char**)’:                                    /convert/length/convert-length.cpp:27: error: expected ‘;’ before ‘meter’make[2]: *** [CMakeFiles/convert-length.dir/convert-length.cpp.o] Error 1make[1]: *** [CMakeFiles/convert-length.dir/all] Error 2make: *** [all] Error 2

我希望这是一个我遗漏的愚蠢的 C++ 语法错误,但我花了几个小时寻找它但没有成功。我没有多少 C++ 经验,但这段代码在语法上看起来是正确的。有人看到或知道哪里出了问题吗?

最佳答案

enum UnitType { Meter, Inch };

在这里,您已将 Meter 定义为枚举值。

class Meter {

...但是在这里(在相同的范围内)您试图将它重新定义为一个类的名称。这是合法的,但是以后要使用它,您必须使用 class Meter,而不仅仅是 Meter:

class Meter meter(1.0);

IMO,即使您可以对两者使用相同的名称,也可能会导致混淆和问题,而通过简单地重命名一个或另一个(或两者)可以更好地避免这些问题。

关于c++ - 实例前预期错误 ';',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com