[尝试阅读其他问题的答案,但没有一个对我有用。
//Equipment.h
#pragma once
class Equipment {
//...
};
//Display.h
#pragma once
class Display :public Equipment { //here is the error
public:
Display(int id, int price, int year);
};
//Display.cpp
#pragma once
#include "Display.h"
#include "Equipment.h"
Display::Display(int id=0, int price=0, int year=0) {
int arr[3 + 1] = { id, price, year };
//Equipment(int id, int price, int year);
}
//Printer.h and .cpp are very similar
//in composition to Display.h and .cpp
//error is in a similar position too
//source.cpp
#include<iostream>
using namespace std;
#include "Printer.cpp"
#include "Display.cpp"
我真的不知道Equipment.h
基类包含文件的位置。尝试将其放入源中,并认为如果我将其放入第一行就可以了,不是。
试图将包含文件放入两个派生标头中,出现了与“已在Display.obj中定义”有关的另一个错误。
头文件和cpp文件都必须存在,我不知道如何放置包含文件。
Equipment.h
#pragma once
class Equipment {
//,,,
};
Display.h
#pragma once
#include "Equipment.h"
class Display :public Equipment {
public:
Display(int id, int price, int year);
};
Printer.h
#pragma once
#include "Equipment.h"
class Printer : public Equipment {
Printer();
};
Display.cpp
#include "Display.h"
Display::Display(int id=0, int price=0, int year=0) {
int arr[3 + 1] = { id, price, year };
//Equipment(int id, int price, int year);
}
Printer.cpp
#include "Printer.h"
Printer::Printer() {
//...
}
source.cpp
#include "Printer.h"
#include "Display.h"
#include<iostream>
using namespace std;
//use Printer and Display
查看错误发生的位置(//here is the error
行),编译器在尝试编译Equipment
时尚未“看到” Display.h
类。您可以通过#include
中的Equipment.h
-ing Display.h
解决此错误。
如其中一条注释中所述,应避免在代码中将#include
-ing .cpp
文件。源文件应先编译然后链接。