簡體   English   中英

未定義對構造函數的引用,泛型類

[英]Undefined reference to constructor, generic class

我只是在學習C ++中的模板編程,並且鏈接器有一個問題,無法找到我的類的構造函數的定義。 可能是什么原因? 下面的代碼。

記錄器

template <class T>
class Logger {
public:
    Logger(NodeHandle& nh, char* topic, short pubFrequency);
    virtual ~Logger();

    void publish();
    T& getMsg();

private:
    NodeHandle& nh_;
    Publisher publisher_;
    T msg_;
    const char* topic_;
    const short pubFrequency_;
};

記錄器

template <class T>
Logger<T>::Logger(NodeHandle& nh, char* topic, short pubFrequency) :
    nh_(nh),
    topic_(topic),
    pubFrequency_(pubFrequency),
    publisher_(topic_, static_cast<Msg*>(&msg_)) {}

template <class T>
Logger<T>::~Logger() {}

然后,當我嘗試在main.cpp中創建Logger實例時

NodeHandle nh; 
Logger<std_msgs::String> logger(nh, "test", 10);

鏈接器在抱怨:

undefined reference to `Logger<std_msgs::String>::Logger(NodeHandle&, char*, short)'

我究竟做錯了什么? 我猜沒有編譯器錯誤,所以所有包含的錯誤都在那里。

您需要模板化的實現位於標題中。

任何引用模板代碼的代碼都需要“查看”實現,以便編譯器可以從模板生成代碼。

暫無
暫無

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

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