c++ - 来自不同文件的类,变量声明不起作用“不允许不完整的类型”
问题描述
我有一个这样的文件:
#include <list>
#include "term.h"
class Term {
};
class Number : public Term {
private:
double m_number;
Term* m_exponent = nullptr;
public:
Number(double number) {
m_number = number;
}
Number(double number, Term* exponent) {
m_number = number;
m_exponent = exponent;
}
double getNumber() {
return m_number;
}
void setExponent(Term* exponent) {
m_exponent = exponent;
}
Term* getExponent() {
return m_exponent;
}
};
和一个像这样的头文件 term.h :
#pragma once
class Term;
class Number;
现在在我的主函数中,如果我尝试声明一个数字类型的变量(数字 a(10.0)),我会收到以下错误:不允许不完整类型。
#include "term.h"
int main() {
Number a(10.0);
}
我不明白这是从哪里来的。任何帮助,将不胜感激。提前致谢!:)
解决方案
好的,快速教程。
C++ 将类的定义和实现的概念分开。这使得它与 Java 等语言不同。现在,如果需要,您可以在定义中内联类的部分内容,但您不必这样做。
您的 .h 文件应包含以下内容:
class Foo { ... 完整定义 };
然后在你的 .cpp 中,实现你在 .h 中没有做的任何事情:
无效 Foo::someMethod() { ... }
发生的事情是您的 main.cpp 完全不知道 Number 类是什么。它知道这是一个类,但仅此而已。它需要知道。
基本上,第一个片段中的所有内容都需要出现在 .h 文件中,以便其他 .cpp 文件可以看到它是什么。
推荐阅读
- javascript - 从python文件打开网页不起作用
- python - 如何使用 Python 打开和保存 excel 文件?
- c++ - 试图获取 PIMAGE_EXPORT_DIRECTORY 和偏移量
- jquery - 从 jquery 的 URL 中删除一个字符“~”
- javascript - PHP Sleep - 页面加载问题
- python - 如何将 tensorflow 模型转换为 pytorch 模型?
- reactjs - 在另一个应用程序中运行 React 开发服务器
- latex - 为乳胶中的表格正确设置单元格空间
- react-native - 未调用 componentDidUpdate
- node.js - 我如何在 LAMDA Nodejs 中随机播放数组?