gpt4 book ai didi

C++ 错误 : expected initialiser before 'class'

转载 作者:太空狗 更新时间:2023-10-29 23:36:50 25 4
gpt4 key购买 nike

当我编译我正在处理的程序时,我得到:

expected initializer before 'class'

我的 Class.h 文件出错。我在互联网上查找了错误消息,但找不到确切的错误,虽然类似的错误似乎是由缺少分号引起的,但我不明白为什么我需要一个。这是错误指向的代码,我之前没有其他函数或类。

class Account
{
public:
double dAccountBalance;

double dAccountChange(double dChange);
};

Class.cpp 文件中定义了 double dAccountChange(double dChange) 函数。我不认为这是错误的来源,但这是代码;

double Account::dAccountChange(double dChange)
{
dAccountBalance += dChange;

return 0.0;
}

当我将 Class.h 中的代码更改为如下所示时,

;
class Account
{
public:
double dAccountBalance;

double dAccountChange(double dChange);
};

它不会生成错误消息,但我不明白为什么我需要在它前面加分号,因为我在它前面的唯一代码是以下预处理器行。

#ifndef CLASS_H_INCLUDED
#define CLASS_H_INCLUDED

关于为什么会产生错误的任何想法?

最佳答案

最有可能的是,在您立即 class.h 之前包含的头文件中,您将拥有如下内容:

class xyzzy {
int plugh;
}

没有结束分号。这将使您的代码序列:

class xyzzy {
int plugh;
}
class Account
{
public:
double dAccountBalance;

double dAccountChange(double dChange);
};

这显然是无效的。在第一行之前在 class.h 中插入一个分号将修复它,但它显然是错误的地方(因为它意味着 every 您立即包含的头文件在那之后需要一个起始分号 - 而且,它是第一个标题中定义的一部分,应该在那里)。

现在这可能不是确切的代码序列,但它非常相似,根本原因是 previous header 中缺少一段文本。

你应该回去把它放在更早的包含文件中。

例如,考虑:

include1.h:
class xyzzy {
int plugh;
}
include2.h:
class twisty {
int little_passages;
};
main.cpp:
#include "include1.h"
#include "include2.h"
int main (void) {
return 0;
}

编译产生:

include2.h:3: error: multiple types in one declaration

但是将分号放在 include1.h 的末尾(或 include2.h 的开头,尽管我们已经确定这不是一个好主意)将修复它.

关于C++ 错误 : expected initialiser before 'class' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12024462/

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