0

ヘッダーと .cpp ファイルを持つクラスがあります。関数をヘッダーで宣言し、.cpp ファイルで定義します。

ヘッダ:

#pragma once

// my #includes 

class CDNAGenerator
{
private:
    // stuff 
public:
    CDNAGenerator(int, int);
    ~CDNAGenerator();

    void FilterMeasurementsForOutliers(std::vector<double>& measurement_values);

    // plenty more things

};

CPP:

CDNAGenerator::CDNAGenerator( int genes, int chromosomes )
{
    // constructor code
}

void CDNAGenerator::FilterMeasurementsForOutliers(std::vector<double>& measurement_values)
{
    // function code
}

次に、同じソリューションの別のプロジェクトから .h ファイルを参照します (ただし、.cpp は参照しません - 複数の定義エラーにつながるようです)。

#include "..\CalibrationTool\DNAGenerator.h"

そして、それらの関数を呼び出します:

CDNAGenerator* dnaGenerator = new CDNAGenerator(30, 0);
dnaGenerator->FilterMeasurementsForOutliers(values);

しかし、CDNAGenerator::CDNAGenerator(int, int) および CDNAGenerator::FilterMeasurementsForOutliers(class std::vector > &) で未解決の外部エラーが発生します。

すべてを正しく接続したと思ったので、このリンカ エラーが発生する理由を誰か教えてもらえますか?

4

2 に答える 2

0

CPP ファイルをプロジェクトに追加する

于 2013-09-18T15:18:08.010 に答える
0

どのコンパイラを使用していますか? Gcc (mingw) はサポートしていません#pragma onceコードガードを使用して「複数の定義」を回避します。

#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {
...
}
#endif
于 2013-09-18T15:24:22.023 に答える