【发布时间】:2016-10-12 19:00:50
【问题描述】:
以下是 4 节课,我正在学习基本的 c++ 语法,男孩是不是比我用过的其他语言更难,更不宽容。我有一个主类,基类“BaseArray”和两个子类“OrderedArray”和“UnorderedArray”。
Main.cpp
#include <iostream>
#include "OrderedArray.cpp"
#include "UnorderedArray.cpp"
using namespace std;
int main() {
system("PAUSE");
return 0;
}
BaseArray.cpp
#include <iostream>
using namespace std;
class BaseArray {
public:
BaseArray::BaseArray() {
}
};
OrderedArray.cpp
#include <iostream>
#include "BaseArray.cpp"
using namespace std;
class OrderedArray : public BaseArray {
OrderedArray::OrderedArray() {
}
};
UnorderedArray.cpp
#include <iostream>
#include "BaseArray.cpp"
using namespace std;
class UnorderedArray : public BaseArray {
UnorderedArray::UnorderedArray() {
}
};
我收到的错误如下,来自在线搜索其他线程。我认为这可能与重复调用类有关。老实说,我不知道。如果有人能指出我正确的方向,那就太好了,在此先感谢!
error C2011: 'BaseArray':'class' type redefinition
error C2504: 'BaseArray':base class undefined
要修复此错误,我可以删除 main.cpp 顶部的包含之一,但我需要这些来创建对象并稍后从子类调用函数。
【问题讨论】:
-
你需要使用include保护。
-
几乎不应该包含 cpp 文件。您需要将代码移动到头文件中或将接口与实现分开。
-
This 基本上回答了这个问题,但我不会称之为欺骗
-
有趣的是,我很快就阅读了头文件。现在我的问题是如何在头文件中显示继承语法?相反,拥有相同设置但包含头文件的正确方法是什么?
-
关键是:从实现中分离接口接口在头文件中,实现在源文件中。跨度>
标签: c++ inheritance compiler-errors