2013-07-27 50 views
-2

我已經做了一些研究和谷歌搜索這個錯誤的天,據我所知這是一個常見問題,許多在c + +,我仍然沒有找到明確的答案這個錯誤。我讀過鏈接文件可以解決這個問題,但我可以找到任何示例代碼來做到這一點。我很接近完成這段代碼,我只需要從主文件中調用構造函數(或者只是創建一個簡單的對象),但我總是得到這個「對NamedStorm :: NamedStorm()的未識別引用」錯誤,請幫忙。身份不明的引用構造函數(C++)

Main.cpp的

#include <iostream> 
#include <string> 

#include "NamedStorm.h" 

using namespace std; 

NamedStorm storm[2]; 

int main(){ 
    // NamedStorm Chris("Chris", 70.0, "T.S.", 990.0); 
    // storm[0] = Chris; 
    return 0; 
} 

NamedStorm.cpp

// CPP => Function definition 
#include <string> 

#include "NamedStorm.h" 

using namespace std; 

// Defining static variables 
int NamedStorm::stormCount = 0; 

// Constructor definition 
NamedStorm::NamedStorm(std::string sName, double wSpeed, std::string sCat, double sPress){ 
    stormName = sName; 
    windSpeed = wSpeed; 
    stormCategory = sCat; 
    stormPressure = sPress; 
    stormCount++; 
} 

NamedStorm::NamedStorm(std::string sName){ 
    stormName = sName; 
    stormCount++; 
} 

NamedStorm::NamedStorm(){ 
    stormName = sName; 
    stormCount++; 
} 

// Destructor definition 
//NamedStorm::~NamedStorm(){} 

// Get (Accessor) function definition 
int NamedStorm::getStormCount(){ 
    return stormCount; 
} 

double NamedStorm::getStormPressure(){ 
    return stormPressure; 
} 

string NamedStorm::getStormCategory(){ 
    return stormCategory; 
} 

string NamedStorm::getName(){ 
    return stormName; 
} 

// Set (Mutator) function definition 
void NamedStorm::displayOutput(){} 
void NamedStorm::sortByNames(){} 
void NamedStorm::getAverageStormPressure(){} 
void NamedStorm::getAverageWindSpeed(){} 
void NamedStorm::getWindSpeed(){} 

NamedStorm.h

#ifndef NAMEDSTORM_H_INCLUDED 
#define NAMEDSTORM_H_INCLUDED 

// NEVER use using namespce in header, use std instead. 


class NamedStorm{ 
private: 
    std::string stormName; 
    std::string stormCategory; 
    double maxWindSpeed; 
    double stormPressure; 
    static int stormCount; 

public: 

    // Constructor 
    NamedStorm(std::string, double, std::string, double); 
    NamedStorm(std::string); 
    NamedStorm(); 

    // Destructor 
    //~NamedStorm(); 

    // Get functions 
    int getStormCount(); 
    double getStormPressure(); 
    double getWindSpeed(); 
    std::string getStormCategory(); 
    std::string getName(); 

    // Set functions 
    static void displayOutput(); 
    static void sortByNames(); 
    static void sortByWindSpeed(); 
    static void getAverageWindSpeed(); 
    static void getAverageStormPressure(); 
}; 

#endif // NAMEDSTORM_H_INCLUDED 
+0

您還需要將'namedstorm.obj'傳遞給鏈接器。你使用哪個工具鏈? – greatwolf

+0

這將是值得**閱讀**的錯誤信息。它是「未定義的」,而不是「未知的」。不明飛行物不明,而不是符號。 - 「但是我可以找到任何示例代碼來做到這一點」 - 你不需要代碼 - 你需要一個鏈接器和一個命令行來調用鏈接器。 – 2013-07-27 19:20:21

+1

編譯和鏈接不是C++語言的一部分,它是特定於編譯器和/或IDE,簡而言之,您需要學習如何使用這些工具,閱讀一些關於如何在您使用的IDE中創建和構建項目的在線教程(「IDE」類似於Visual Studio,Eclipse,Dev C++等)我相信你甚至可以在YouTube上找到這個視頻教程。 –

回答

0

爲什麼definit離子的默認構造函數與NamedStorm::NamedStorm(std::string)相同嗎?我會從糾正這一點開始。

+0

我確實改變了構造函數,仍然有同樣的問題,我相信這些文件在項目中處於正確的位置等等。也許我錯過了什麼? –