【发布时间】:2012-08-03 08:39:42
【问题描述】:
我是一名尝试 C++ 的 Java 开发人员。
我刚刚创建了一个新课程。在我的其他课程中,我想要列出可以存储过滤器对象的列表。
Filter.h
#ifndef FILTER_H_
#define FILTER_H_
class Filter {
public:
Filter(int id);
int id;
~Filter();
};
#endif /* FILTER_H_ */
Filter.cpp
#include "Filter.h"
Filter::Filter(int id) {
this.id = id;
}
Filter::~Filter() {
}
Cars.h
#include "Filter.h"
...
...
private:
std::vector<Filter> filters;
Cars.cpp
所以在这里的一个函数中我尝试这样做:
int id = 2;
Filter *filter = new Filter(id);
产生此错误:
Cars.cpp:120: undefined reference to `Filter::Filter(int)'
stl_construct.h:83: undefined reference to `Filter::~Filter()'
这是什么原因?
【问题讨论】:
-
这甚至不会编译。你确定这是真正的代码吗?如果是这样,您正在以错误的方式编译项目。你是怎么做到的?
-
您能发布您的 g++ 构建说明吗?
-
如果你对C++是认真的,请拿起一本好书好好学习。按照你的方式,你最终会遇到一个可怕的、泄漏的、有缺陷的 java 式的混乱。 C++ 与 Java 不同。
-
拜托,拜托 获取a good book on C++,忘记你从 Java 中知道的一切。 C++ 重视完全不同的东西,如果你尝试像在 Java 中一样编程,只会损害你的 C++ 体验。
-
@Ole-M:您的具体问题在于您构建代码的方式。如果您以正确的方式构建它,您将不会收到上述错误。实际问题似乎是您的构建中没有包含 Filter.cpp。与 Java 不同,每个 C++ 编译器都是不同的。你需要学习如何使用你拥有的编译器。