У меня есть класс с заголовком и .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 (класс станд :: вектор> &)
Я думал, что я правильно подключил все вверх , так может кто-нибудь предположить, почему я получаю эту ошибку компоновщика?
Вы * имеете * добавили исходный файл в проект? Или построили с ним, если вы сделаете это вручную? –
@ joachim-pileborg Да, это определенно в проекте (предполагая, что вы имеете в виду проект, где живет его .h-файл?) – technorabble
Отдельный проект, это ключ. Если вы хотите, чтобы код в проекте A использовал код в проекте B, тогда проект B должен создать библиотеку, с которой может ссылаться проект A. Это происходит не потому, что оба проекта являются частью одного и того же решения. Или вы можете просто добавить исходный файл в оба проекта. – john