我在哪里输入两个派生 header 的基础 class header?
Where do I input the base class header for two derived headers?
尝试阅读其他问题的答案,但 none 为我做了。
//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
基础 class 包含文件。试过把它放在源代码中,我认为如果我先把它放在源代码中它会起作用,不。
尝试将包含文件放入两个派生的 header 中,出现了与 "already defined in Display.obj" 有关的不同错误。
header 和 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
的行),编译器在尝试编译 Display.h
。您可以通过 #include
-ing Equipment.h
in Display.h
.
来解决此错误
如评论之一所述,您应该避免在代码中使用 #include
-ing .cpp
文件。应编译源文件然后链接。
尝试阅读其他问题的答案,但 none 为我做了。
//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
基础 class 包含文件。试过把它放在源代码中,我认为如果我先把它放在源代码中它会起作用,不。
尝试将包含文件放入两个派生的 header 中,出现了与 "already defined in Display.obj" 有关的不同错误。
header 和 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
的行),编译器在尝试编译 Display.h
。您可以通过 #include
-ing Equipment.h
in Display.h
.
如评论之一所述,您应该避免在代码中使用 #include
-ing .cpp
文件。应编译源文件然后链接。