簡體   English   中英

VS2005 C ++:奇怪的鏈接問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM