[英]VS2005 C++: strange linking problem
我的Visual Studio 2005 C ++项目中存在一些奇怪的链接问题。 和往常一样,我在标头中声明类并在cpp中定义它的方法。 A所有这些文件都包含在我的项目中。 而且我仍然有未解决的外部符号calcWeight。 如果我实际上在我的主要功能中使用此类,就会出现。 在父类CHDRGenerator中,将calcWeight()声明为虚拟的。如果我在cpp中注释了一个代码,并在类主体中定义了calcWeight,它就可以正常工作。 但是我真的不喜欢这种魔术。 有人可以帮忙吗?
这是代码的一部分:
//mann-pickard.h
#include "stdafx.h"
#include "simple.h"
class CHDRGenerator_Mann_Pickard : public CHDRGenerator
{
public:
/// @name Constructors
/// @{
/// @brief a constructor using prepared imaged sequence
CHDRGenerator_Mann_Pickard(CSimpleImageFile * imSeq, int seqL) : CHDRGenerator(imSeq, seqL)
{
}
/// @brief a constructor using filenames
CHDRGenerator_Mann_Pickard(std::string * filenames, int seqL) : CHDRGenerator(filenames, seqL)
{
}
/// @brief a constructor, CFileNameSequence object parameter
CHDRGenerator_Mann_Pickard(CFileNameSequence & const fileseq) : CHDRGenerator(fileseq)
{
}
/// @}
private:
inline double calcWeight(double val);
};
//mann-pickard.cpp
#include "mann-pickard.h"
//=======================Class CHDRGenerator_Mann_Pickard methods=====================//
//...
inline double CHDRGenerator_Mann_Pickard::calcWeight(double val)
{
const double gamma = 2.2f;
return gamma * pow(val, gamma - 1);
}
//=====================End of Class CHDRGenerator_Mann_Pickard methods=================//
“ simple.h”是CHDRGenerator类实现的头。 我知道它应该可以正常工作。 也许我有一些愚蠢的难以发现的错误?
如果从calcWeight的声明和定义中删除“内联”会怎样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.