所以我有这个奇怪的问题:当我导入一个单独的类的.h文件时,我的基本程序会生成一条错误消息(对'foo :: foo(int)'的未定义引用)。但是,当我将导入文件更改为.cpp时,一切正常。
现在,我已经阅读了一些,并看了几个视频教程,他们都说同样的:导入.h文件。那为什么不起作用呢?
我使用Code :: Blocks,我在Windows 7中编译和运行(没有命令行)。我怀疑某些东西设置得不是很正确,但是,我确实想知道它是否是我的代码失败了。
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;
}
答案 0 :(得分:1)
执行链接步骤时,您无法编译和/或链接Foo.cpp文件。我不熟悉Code :: Blocks,所以我不能告诉你如何修复它。
答案 1 :(得分:1)
您需要编译 main.cpp 和 foo.cpp 并将2个结果对象文件链接在一起。
答案 2 :(得分:0)
右键单击.cpp文件并转到属性。在构建选项卡上,确保选中编译,链接,调试和发布。