在单独的文件中类

Classes in separate files

本文关键字:文件 单独      更新时间:2023-10-16

我正在尝试在 codeBlocks 中的单独文件中使用类,但是我遇到了以下问题。

我有3个文件:main.cppclasa.hclasa.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

当i 将它们包含在一个项目中时,main.cpp不会构建。但是,如果我用"clasa.cpp"替换"clasa.h",则可以再次工作。

为什么它不起作用?

tl; dr-看起来您没有在构建的可执行文件中编译标题文件(*.h(。

单击运行按钮时,计算机会做两件事。首先,它编译代码并制作可执行文件。然后它运行可执行文件。首先,编译器如何工作?它读取 *.cpp,当它遇到" #include"时,它替换了指定文件中的代码。编译器处理#include" clasa.h"行之后,main.cpp文件将看起来像这样:

#include <iostream>
#pragma once
class clasa
{
public:
    clasa();
};
using namespace std;
int main()
{
    clasa obj;
    return 0;
}

它也对此也是如此。当您从项目中删除 *.H文件时,编译器不会在可执行文件中包含代码。它与 *.cpp变体一起使用的原因是因为编译器不包含 *.cpp文件。他们可以作为运行程序访问。希望这对您有帮助。