2011-04-23 120 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