2012-02-24 42 views
0

我試圖編譯我的代碼時收到此錯誤。「BangBangControlTest.o和BangBangControl.o中的重複符號_heating_unit」是什麼意思?

$ g++ -o BangBangControlTest BangBangControl.o BangBangControlTest.o ld: duplicate symbol _heating_unit in BangBangControlTest.o and BangBangControl.o for architecture x86_64 collect2: ld returned 1 exit status

我新的C++並不能發現什麼是錯的。我搜索了很多教程,並查看了其他堆棧用戶收到的類似錯誤消息。這是我的課程。 「BangBangControlTest.cpp」

// Test function 
#include <iostream> 
#include "BangBangControl.h" 
using namespace std; 

int main(){ 
    BangBangControl control(50, true, 75); 

for(int i = 0; i < 50; i++){ 
std::cout << "Temp = " << control.update() << endl; 
} 

return 0; 

} 

「BangBangControl.cpp」

#include <iostream> 
#include "BangBangControl.h" 
using namespace std; 

BangBangControl::BangBangControl(int temp, bool isOn, int initialTemp){ 
    heating_unit = HeatingUnit(isOn, initialTemp); 
    temp_to_maintain = temp; 
} 

void BangBangControl::setTemp(int temp){temp_to_maintain = temp;} 
int BangBangControl::getTemp(){return temp_to_maintain;} 
int BangBangControl::update(){ 
    int b=heating_unit.tick(); 
    if (b > temp_to_maintain + 2) heating_unit.turnOff(); if (b < temp_to_maintain - 2) heating_unit.turnOn(); 
    return b; 
} 

「BangBangControl.h」

// BangBangControl header 
#include <iostream> 
#include "HeatingUnit.h" 
using namespace std; 

HeatingUnit heating_unit; 
int temp_to_maintain; 

class BangBangControl{ 

public: 
    BangBangControl(int, bool, int); 
    void setTemp(int); 
    int getTemp(); 
    int update(); 
}; 

「HeatingUnit.cpp」

// HeatingUnit class implementation 

#include <iostream> 
#include "HeatingUnit.h" 

using namespace std; 

HeatingUnit::HeatingUnit(bool a, int b){ 
    isOn = a; 
    temp = b; 
} 

void HeatingUnit::turnOn(){isOn = true;} 

void HeatingUnit::turnOff(){isOn = false;} 

int HeatingUnit::tick(){ 
    if(isOn && temp <= 100){ 
    return ++temp; 

} 
    else if((!isOn) && temp >= 0){ 
    return --temp; 
    } 
    else{ 
    return temp; 
    } 
} 

「 HeatingUnit.h「

#include <iostream> 
using namespace std; 

class HeatingUnit{ 
    public: 
    bool isOn; 
    int temp; 

    HeatingUnit(); 
    HeatingUnit(bool, int); 
    void turnOn(); 
    void turnOff(); 
    int tick(); 
}; 

回答