g ++编译器“重新定义...以前定义过的”

时间:2017-11-14 18:56:49

标签: c++ c++11 gcc makefile g++

我知道有类似的问题,但在我的案例中没有一个可行。嗨,我找不到为什么我有这个问题。 这是我的个人文件:

#ifndef INDIVIDUAL_H
#define INDIVIDUAL_H

#include <vector>
#include <stdlib.h>
#include <time.h> 
#include <iostream>


using namespace std;

class Individual{
    private:
        vector<unsigned int> chromosome;
        unsigned int n_genes;
        unsigned int N_colours_used = 0;
        unsigned int fitness = 0;

    public:
        Individual(unsigned int ngenes){};

};

#endif

这是我的个人.cpp文件:

#include "individual.h"


Individual :: Individual(unsigned int ngenes){
    cout << "something" << endl;
}

错误看起来像这样

src/individual.cpp:4:1: error: redefinition of ‘Individual::Individual(unsigned int)’
Individual :: Individual(unsigned int ngenes){
 ^
In file included from src/individual.cpp:1:0:
include/individual.h:24:13: note: ‘Individual::Individual(unsigned int)’ previously defined here
             Individual(unsigned int ngenes){};

我尝试了stackoverflow中的所有内容,但我仍然不知道如何解决这个问题。此外
“#pragma once”不起作用。

1 个答案:

答案 0 :(得分:5)

    Individual(unsigned int ngenes){};

正如您所看到的,在函数声明后面有{ },这是一个空体的定义。

然后,您尝试重新定义.cpp文件中函数的主体。删除{ }