离开C++已经有几年了,并且从以下代码中获取链接器错误:

基因h

#ifndef GENE_H_INCLUDED
#define GENE_H_INCLUDED

template <typename T>
class Gene {
    public:
    T getValue();
    void setValue(T value);
    void setRange(T min, T max);

    private:
    T value;
    T minValue;
    T maxValue;
};

#endif // GENE_H_INCLUDED

基因cpp
#include "Gene.h"

template <typename T>
T Gene<T>::getValue() {
    return this->value;
}

template <typename T>
void Gene<T>::setValue(T value) {
    if(value >= this->minValue && value <= this->minValue) {
        this->value = value;
    }
}

template <typename T>
void Gene<T>::setRange(T min, T max) {
    this->minValue = min;
    this->maxValue = max;
}

如果对任何人都重要,请使用Code::Blocks和GCC。另外,显然要将一些GA内容移植到C++中以进行娱乐和练习。

最佳答案

在实例化给定的模板类之前,必须先包含模板定义(代码中的cpp文件),因此您要么必须在 header 中包含函数定义,要么在使用该类之前#include cpp文件(或执行显式操作)实例化(如果数量有限)。

关于c++ - 带有简单模板类的“Undefined symbols”链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/999358/

10-09 23:03