2017-11-14 1 views
-2

비슷한 질문이 있지만 내 경우에는 이러한 작업이 없음을 알고 있습니다. 안녕 내가 왜이 문제가 있는지 찾을 수 없습니다. 여기 내 individual.h 파일입니다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 

그리고 이것은 내 individual.cpp 파일입니다 : 오류이

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){}; 

과 같은

#include "individual.h" 


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

내가 유래 모든 것을 먹으 렴 시도 그러나 나는 아직도이 문제를 해결하는 방법을 모른다. 또한
"#pragma once"가 작동하지 않습니다.

+0

문제와 관련이 없지만 [C++ 식별자에서 밑줄을 사용하는 것에 대한 규칙은 무엇입니까?] (https://stackoverflow.com/questions/228783/what-are-the)를 읽는 것이 좋습니다. -rules-about-using-an-ac-identifier) ​​그런 다음 매크로'_INDIVIDUAL_H'에 대해 생각해보십시오. –

답변

5
Individual(unsigned int ngenes){}; 

당신이 빈 몸의 정의는 함수 선언, 후 { }이 볼 수 있듯이.

그런 다음 .cpp 파일에서 함수의 본문을 다시 정의하려고합니다. { }을 삭제하십시오.

+0

고맙습니다. 2 시간 동안이 문제를 해결하려고 노력했습니다. – Juanjo

관련 문제