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

};

共产党:

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 回答