2011-04-23 121 views
2

我一直在收到鏈接器錯誤undefined參考Poisson::Poisson(int, int) 我想使用Poisson::Poisson(int, double),因爲我明顯想要做的事,不知道爲什麼它不會讓我!構造函數中的C++鏈接器錯誤

#include "Distribution.h" 
using namespace std; 

class Poisson : public Distribution 
{ 
public: 
// Constructors 
Poisson(int inittrials, double initlambda); 
Poisson();   //Sets trials (k) = 10, lambda = 5 

// Knowledge responsibilities 
double GetLambda() const; 
// Returns the time zone 

double calcProb(); 
double calcExpVal(); 
double calcVar(); 



private:          
    double lambda; 
}; 
現在

我的cpp文件

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

Poisson::Poisson(int inittrials, double initlambda) 
    : Distribution(inittrials) 
{ 
    lambda = initlambda; 
    updateNickname("Probability of Exactly k Occurences of an event"); 
    updateProbEqn("f(k, lambda) = (((lambda)^k) * e(^-lambda))/ k!"); 
    updateExpValEqn("E(X) = Lambda"); 
    updateVarEqn("VAR(X) = Lambda"); 
} 

//************************************************************ 

Poisson::Poisson() 
{ lambda = 5.0; } 

//************************************************************ 

double Poisson::GetLambda() const 
{ return lambda; } 

//************************************************************ 

double Poisson::calcProb() 
{ 
    double numerator; 
    double denomanator;  
    //numerator = (GetLambda())^(GetTrials()) * (2.71828183)^((-1)*GetLambda()); 
} 

double Poisson::calcExpVal() 
{ 
} 
double Poisson::calcVar() 
{ 
} 
+1

在您的IDE中嘗試「重建所有」(或者使用makefile,「make clean」)。 – 2011-04-23 01:23:08

+5

您需要發佈實際導致錯誤的代碼。你沒有一個構造函數需要'(int,int)'和某個地方這就是你想要做的。 – 2011-04-23 01:24:57

+0

@ f00ly鏈接器還應該告訴你哪個翻譯單元正在創建這個不存在的引用。它應該給你一個關於從何處開始故障排除的想法。 – greatwolf 2011-04-23 01:47:11

回答

0

你最有可能調用Poisson object(4, 4)。由於4是一個整數,所以不是一個double,這會導致鏈接器錯誤(因爲這個構造函數不存在)。相反,請在對象聲明中嘗試Poisson object(4, 4.0)

+0

實際上'泊松對象(4,4)'應該工作而不必明確地使用double,因爲編譯器應該能夠將第二個參數中的整數轉換爲臨時double並將該新的double值複製到第二個參數中。你可以在這裏看到一個例子:http://ideone.com/LoMZp – Jason 2011-04-23 05:18:09

+0

有了GCC,當然,但與「鏈接器錯誤:」的措辭,這聽起來像一個cl.exe錯誤,我懷疑有相同的大腦作爲海灣合作委員會.... – 2011-04-23 05:30:13

+0

啊,好吧,謝謝你的信息。 – Jason 2011-04-23 05:55:12