单独文件中的类

时间:2018-04-02 14:05:31

标签: c++ file class header codeblocks

我尝试使用 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

当我 DON&#39; 将它们包含到项目中时,main.cpp只是没有构建。但如果我将"clasa.h"替换为"clasa.cpp",则会再次发挥作用。

为什么它不起作用?

1 个答案:

答案 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文件。它们作为运行中的程序进行访问。 希望这有助于你。