类成员属性错误
Class member attributes error
我有两个类,想要有一个从类Kunde到类Konto和反向的引用,但我的编译器显示了很多错误。我不知道问题出在哪里。请帮助我。
近藤类:
#pragma once
#include "Kunde.h"
class Konto {
private:
Kunde* kunde;
protected:
int kontonummer;
double stand;
public:
int getKontonummer();
Kunde* getKunde();
double getKontostand();
bool einzahlen(double betrag);
virtual bool auszahlen(double betrag);
};
坤德类:
#pragma once
#include "Konto.h"
#include <string>
class Kunde {
private:
string vorname;
string nachname;
Konto* konto;
public:
Kunde(string vorname, string nachname);
void setKonto(Konto* konto);
Konto* getKonto();
};
我得到以下编译器错误:
konto.h(6):错误 C2143:语法错误:在"*"
之前缺少";" konto.h(6):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++不支持"默认整型"
konto.h(6):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++不支持"默认整型"
等等。
头文件不能相互包含。尝试在一个或两个中尝试前向声明,而不是 #includes,如下所示:
class Kunde;
您有一个循环包含问题。您在头文件的第一行看到 #pragma once
语句了吗?这样可以防止包含标头(如果已包含标头)。由于头文件相互包含,因此在声明Kunde
或Konto
时尚未定义另一个。
如果在另一个头文件中对任一类进行简单的前向声明,则可以避免此问题。具体说来:
(康托)
#pragma once
// Do NOT include Kunde.h
class Kunde;
class Konto {
// your further class definition as normal.
唯一的问题是你现在应该在Konto.cpp
中包含Kunde.h
,否则这会导致链接器错误。
编辑:请参阅评论:)谢谢
将一个文件包含在另一个文件中,包括第一个文件,包括包含第一个文件的第二个文件...
肯定会混淆#pragma once
Konto 包含 Kunde.h,Kunde 包含 Konto.h。在这两种情况下都进行前向声明
这是一个经典的循环依赖关系。您可以通过几种方式处理它。第一种是对尝试引用的其他类使用前向声明。您还需要删除其他类的包含。
孔托类;
类 昆德{ 康托* 康托;...};
另一种方法是抽象出一个给你你想要的东西的接口。如果你愿意,我可以更详细地介绍这种方法。
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 当警告为错误时使用 [[已弃用]] 属性 (-Werror)
- C++ 中常量属性的初始化构造函数错误
- GCC 编译器是否应该对涉及 [[fallthrough]] 属性的格式错误的C++代码进行诊断?
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- MFC 对话框属性表用法在 VS 2017 中产生错误,适用于 VS 2013
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 创建新对象并立即为其设置属性时出现编译器错误
- Windows 脚本主机 - 错误 '800A01B6' 对象不支持此属性或方法
- accelerator.cu(8): 错误:属性"managed"在这里不适用?
- 我刚刚安装了Visual Studio,遇到了一些错误,特别是WindowsSDKDir属性未定义.可能找不到某些生成工
- 有没有办法将 vector<unsigned char> 插入 postgresql 表中,具有 bytea 属性,没有 UTF8 编码错误?
- LNK2019与另一个工作项目具有相同属性的项目上的错误
- Arduino / esp8266:错误:'Pchr 不允许部分属性
- TensorFlow C调整更改属性的大小错误
- 错误 - 无需匹配功能,将类别为属性C 呼叫
- 编译错误提升属性树C
- binary_search on属性的汇编错误
- X11 XGetImage badmatch错误(无效的参数属性)