我尝试使用 CodeBlocks 中的单独文件中的类,但我遇到了以下问题。
我有3个文件:main.cpp
,clasa.h
和clasa.cpp
。
clasa.h
#pragma once
class clasa
{
public:
clasa();
};
clasa.cpp
#include "clasa.h"
#include <iostream>
using namespace std;
clasa::clasa()
{
cout<<"hi";
}
的main.cpp
#include <iostream>
#include "clasa.h"
using namespace std;
int main()
{
clasa obj;
return 0;
}
当我将这3个文件包含在项目中时,输出为hi
。
当我 DON&#39; 将它们包含到项目中时,main.cpp只是没有构建。但如果我将"clasa.h"
替换为"clasa.cpp"
,则会再次发挥作用。
为什么它不起作用?
答案 0 :(得分:0)
TL; DR - 看起来您没有在构建的可执行文件中编译头文件(* .h)。
当您单击运行按钮时,计算机会执行两项操作。首先,它编译代码并生成可执行文件。然后它运行可执行文件。 首先编译器如何工作? 它读取* .cpp,当它出现时#34; #include&#34;它将指定文件中的代码替换为该行。编译器处理完#include&#34; clasa.h&#34; line.cine文件的行如下所示:
#include <iostream>
#pragma once
class clasa
{
public:
clasa();
};
using namespace std;
int main()
{
clasa obj;
return 0;
}
它也是如此。 从项目中删除* .h文件时,编译器不会在可执行文件中包含代码。 它与* .cpp变体一起使用的原因是因为编译器不包含* .cpp文件。它们作为运行中的程序进行访问。 希望这有助于你。