這是引發錯誤的程序行:(S和u統計學家對象)鏈接器錯誤 - 朋友和左手邊。 (無模板)
s = 2*u;
錯誤C2678:二進制「*」:沒有操作員發現這需要一個左類型 'INT' 的操作數(或沒有可接受的轉化率)
這是頭文件:
#ifndef STATISTICIAN
#define STATISTICIAN
namespace main_savitch_2C
{
class statistician
{
protected:
int _length;
double _mean, _minimum, _maximum;
public:
statistician();
statistician(int length, double mean,
double min, double max);
void next_number(double num);
void reset();
int length() const;
double sum() const;
double mean() const;
double minimum() const;
double maximum() const;
friend statistician operator*(
const statistician& a, double x);
//friend statistician operator*(
// double x, const statistician& a);
};
bool operator== (
const statistician& a,
const statistician& b);
statistician operator+ (
const statistician& a,
const statistician& b);
}
#endif STATISTICIAN
這是C++的文件:
#include "statistician.h"
using namespace main_savitch_2C;
statistician::statistician()
{
reset();
}
statistician::statistician(int length,
double mean, double min, double max)
{
_length = length;
_mean = mean;
_minimum = min;
_maximum = max;
}
void statistician::next_number(double num)
{
_mean = (_mean * _length + num)/
++_length;
if (num < _minimum) _minimum = num;
if (num > _maximum) _maximum = num;
}
void statistician::reset()
{
_length = _mean = _minimum =
_maximum = 0;
}
int statistician::length() const
{
return _length;
}
double statistician::sum() const
{
return _mean * _length;
}
double statistician::mean() const
{
return _mean;
}
double statistician::minimum() const
{
return _minimum;
}
double statistician::maximum() const
{
return _maximum;
}
bool operator==(const statistician& a,
const statistician& b)
{
return (a.length()==b.length())
&& (a.mean()==b.mean())
&& (a.minimum()==b.minimum())
&& (a.maximum()==b.maximum());
}
statistician operator+ (
const statistician& a,
const statistician& b)
{
return statistician(
a.length() + b.length(),
(a.sum() + b.sum())/
(a.length() + b.length()),
(a.minimum() < b.minimum()) ?
a.minimum() : b.minimum(),
(a.maximum() > b.maximum()) ?
a.maximum() : b.maximum());
}
statistician operator* (
const statistician& a, double x)
{
return statistician(
a.length() * x,
a.mean() * x,
a.minimum() * x,
a.maximum() * x);
}
//statistician operator* (double x,
// const statistician& a)
//{
// return statistician(
// a.length() * x,
// a.mean() * x,
// a.minimum() * x,
// a.maximum() * x);
//}
當我取消的頭和實現兩家運營商,它提供了鏈接錯誤:
error LNK2019: unresolved external symbol "bool __cdecl main_savitch_2C::operator==(class main_savitch_2C::statistician const &,class main_savitch_2C::statistician const &)" ([email protected]@[email protected]@[email protected]) referenced in function "int __cdecl test3(void)" ([email protected]@YAHXZ)
error LNK2019: unresolved external symbol "class main_savitch_2C::statistician __cdecl main_savitch_2C::operator+(class main_savitch_2C::statistician const &,class main_savitch_2C::statistician const &)" ([email protected]@[email protected]@[email protected]@Z) referenced in function "int __cdecl test3(void)" ([email protected]@YAHXZ)
error LNK2019: unresolved external symbol "class main_savitch_2C::statistician __cdecl main_savitch_2C::operator*(double,class main_savitch_2C::statistician const &)" ([email protected]@[email protected]@[email protected]@Z) referenced in function "int __cdecl test4(void)" ([email protected]@YAHXZ)
error LNK1120: 3 unresolved externals
我無法找到任何東西,我想我已經嘗試了一切。我在Win 7 x64 Professional上使用VS 2010 x64 Professional。
做一個乾淨的,然後完整的構建與操作方法uncommeted修復鏈接器問題? – ThomasMcLeod 2011-01-24 01:40:35