У меня странная проблема с компиляцией функции, когда я пытаюсь использовать несколько файлов. Я свел это к следующему простому примеру: предположим, я хочу найти сумму вектора целых чисел. Если я попытаюсь скомпилировать следующий код, он будет работать как положено:
#include <vector>
#include <iostream>
using namespace std;
int VectorSum (const vector<int>& values)
{
int S = 0;
for (int t=0; t < values.size(); t++)
{
S += values[t];
}
return S;
}
int main()
{
vector<int> values;
values.push_back(-100);
values.push_back(75);
values.push_back(75);
cout << "Total = " << VectorSum(values) << endl << endl;
cin.ignore(1, '\n');
return 0;
}
Однако, если я пытаюсь использовать файл заголовка, он падает на моем компьютере (ошибка C4430 при компиляции на VS 2010 для Windows XP). Вот код для другого подхода:
заголовок:
/* VectorSum.h */
#pragma once
#include <vector>
int VectorSum (const vector<int>& values);
источник:
/* VectorSum.cpp */
#include "VectorSum.h"
#include <vector>
int VectorSum (const vector<int>& values)
{
int S = 0;
for (int t=0; t < values.size(); t++)
{
S += values[t];
}
return S;
}
реализация:
/* Main.cpp */
#include "VectorSum.h"
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> values;
values.push_back(-100);
values.push_back(75);
values.push_back(75);
cout << "Total = " << VectorSum(values) << endl << endl;
cin.ignore(1, '\n');
return 0;
}
Как видите, код для функции в VectorSum.cpp идентичен коду в моем первом файле .cpp, поэтому проблема должна быть в заголовке. Есть идеи, что я делаю не так?