我正在学习使用C ++中的模板来定义泛型函数。我在编写一个简单的程序时遇到了问题。我一直收到错误,说main中的函数调用是一个未定义的引用。
我可能在如何声明模板的某个地方犯了一个根本性的错误。可能尝试传递const引用。
请保持温和,我几个月内没有编写C ++。
谢谢, -Izzo
的main.cpp
#include <iostream>
#include <Probability.h>
using namespace std;
int main()
{
int hoor[] = {3, 3, 1, 1};
cout << "Hello world!" << endl;
Probability prob;
prob.ExpectedValueDataSet(hoor);
}
Probability.h
#ifndef COFFEEDEVMATH_PROBABILITY_H
#define COFFEEDEVMATH_PROBABILITY_H
class Probability
{
public:
Probability();
template <typename T> void ExpectedValueDataSet(const T& data);
protected:
private:
};
#endif // COFFEEDEVMATH_PROBABILITY_H
Probability.cpp
#include "Probability.h"
#include <iostream>
Probability::Probability(void)
{
//ctor
}
/* Expected Value */
template <typename T> void ExpectedValueDataSet(const T& data)
{
bool error = 1;
typename T::iterator it;
double avg = 0;
for(it = data.begin(); it != data.end(); it++)
{
avg = ((it - data.begin())*avg)/avg + data[it]/it;// Do nothing for now
std::cout << avg;
std::cout << "/n";
}
}