【发布时间】:2020-07-05 15:23:06
【问题描述】:
由于学校工作,我正在尝试学习 C++。最近我想出了一个困扰我一段时间的问题。如果有3个文件,main.cpp、Fish.cpp、Fish.h
Fish.h:
#ifndef FISH_H
#define FISH_H
class Fish
{
public:
Fish();
};
#endif
Fish.cpp:
#include <iostream>
#include Fish.h
using namespace std;
Fish::Fish()
{
cout << "I love fish" << endl;
}
main.cpp:
#include <iostream>
#include "Fish.cpp"
using namespace std;
int main(){
Fish Salmon;
return 0;
}
问题来了,我知道如果我想在“main.cpp”中使用Fish()构造函数,我应该包含Fish.h,然后编译所有3个文件,但出于好奇,我试图包括“Fish.cpp”。如果我在“main.cpp”中包含“Fish.cpp”,那么 Fish.cpp 中的所有内容都将被复制到 main.cpp,其中包括 行,对吗?但是为什么每次编译运行,终端都会报错呢?
【问题讨论】:
-
请提供您收到的错误消息。但无论如何,从不在其他文件中包含
.cpp文件。 -
#include Fish.h的语法在Fish.cpp中不正确,应该是#include "Fish.h";这是你得到的错误吗? -
"then compile all 3 files" -- 不,你只有两个源文件要编译。源文件 (.cpp) 被编译。头文件 (.h) 获取
#included(反之亦然)。
标签: c++ class constructor compilation header