c – #include .h或.cpp文件?

所以我有这个奇怪的问题:当我导入一个单独的类的.h文件时,我的基本程序会生成一条错误消息(对’foo :: foo(int)’的未定义引用).但是,当我将导入文件更改为.cpp时,一切正常.

现在,我已经阅读了一些,并看了几个视频教程,他们都说同样的:导入.h文件.那为什么不起作用呢?

我在Windows 7中使用Code :: Blocks,我编译并运行(没有命令行).我怀疑某些东西设置得不是很正确,但是,我确实想知道它是否是我的代码失败.

Main.cpp的:

#include <iostream>
#include "Foo.h"  //This don't work. If i include Foo.cpp it does. 

using namespace std;

int main()
{
    Foo k(10);
    cout << k.getInt() << endl;
}

foo.h中:

#ifndef FOO_H
#define FOO_H

class Foo
{
    public:
        Foo(int tall);
        int getInt()const;
    protected:
    private:
        int m;
};

#endif

Foo.cpp中:

#include "Foo.h"

Foo::Foo(int tall)
: m(tall)
{
    //ctor
}

int Foo::getInt()const
{
    return m;
}

最佳答案 您需要编译main.cpp和foo.cpp,并将2个结果对象文件链接在一起.

点赞