簡體   English   中英

對構造函數的未定義引用

[英]Undefined reference to constructor

我是一名嘗試使用 C++ 的 Java 開發人員。

我剛剛創建了一個新課程。 在我的其他課程中,我想列出可以存儲過濾器對象的列表。

過濾器.h

#ifndef FILTER_H_
#define FILTER_H_

class Filter {
public:
  Filter(int id);
  int id;
  ~Filter();

};

#endif /* FILTER_H_ */

過濾器.cpp

#include "Filter.h"

Filter::Filter(int id) {
this.id = id;
}
Filter::~Filter() {
}

汽車.h

#include "Filter.h"
...
...
private:
  std::vector<Filter> filters;

汽車.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()'

這是什么原因?

該錯誤是由鏈接器生成的,因為它看不到構造函數的定義所在的位置。

如果您使用的是 IDE,則應將兩個 .cpp 文件添加到項目中,以便它們可以一起編譯,並且鏈接器可以找到定義。

如果沒有,那么您必須自己組合它們 - 假設您使用的是 gcc:

g++ cars.cpp filter.cpp

會將它們組合成一個可執行文件,並且不應向您顯示錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM