Я прочитал много сообщений о LNK2019, но не могу решить эту ошибку.C++ LNK2019 неразрешенный внешний символ
Вот мой код:
time.h:
#ifndef PROJECT2_TIME_H
#define PROJECT2_TIME_H
#include<iostream>
using std::ostream;
namespace Project2
{
class Time
{
friend Time& operator+=(const Time& lhs, const Time& rhs);
friend ostream& operator<<(ostream& os, const Time& rhs);
public:
static const unsigned secondsInOneHour = 3600;
static const unsigned secondsInOneMinute = 60;
Time(unsigned hours, unsigned minutes, unsigned seconds);
unsigned getTotalTimeAsSeconds() const;
private:
unsigned seconds;
};
Time& operator+=(const Time& lhs, const Time& rhs);
ostream& operator<<(ostream& os, const Time& rhs);
}
#endif
Time.cpp:
#include "Time.h"
Project2::Time::Time(unsigned hours, unsigned minutes, unsigned seconds)
{
this->seconds = hours*secondsInOneHour + minutes*secondsInOneMinute + seconds;
}
unsigned
Project2::Time::getTotalTimeAsSeconds() const
{
return this->seconds;
}
Project2::Time&
Project2::operator+=(const Time& lhs, const Time& rhs)
{
Time& tempTime(unsigned hours, unsigned minutes, unsigned seconds);
unsigned lhsHours = lhs.seconds/Time::secondsInOneHour;
unsigned lhsMinutes = (lhs.seconds/60) % 60;
unsigned lhsSeconds = (lhs.seconds/60/60) % 60;
unsigned rhsHours = rhs.seconds/Time::secondsInOneHour;
unsigned rhsMinutes = (rhs.seconds/60) % 60;
unsigned rhsSeconds = (rhs.seconds/60/60) % 60;
return tempTime(lhsHours + rhsHours, lhsMinutes + rhsMinutes, lhsSeconds + rhsSeconds);
}
ostream&
Project2::operator<<(ostream& os, const Time& rhs)
{
unsigned rhsHours = rhs.seconds/Time::secondsInOneHour;
unsigned rhsMinutes = (rhs.seconds/60) % 60;
unsigned rhsSeconds = (rhs.seconds/60/60) % 60;
os << rhsHours << "h:" << rhsMinutes << "m:" << rhsSeconds << "s";
return os;
}
main.cpp просто создает объекты Time и использует перегруженные операторы, похоже, не могут быть проблемы (эти коды предоставлены, поэтому сами по себе хороши) ,
Я попытался удалить «&» позади символа «Время», и я получил ту же ошибку.
А вот сообщение об ошибке:
Ошибка 1 ошибка LNK2019: неразрешенный внешний символ "класс Проект2 :: Время & __cdecl tempTime (беззнаковое целочисленное значение, беззнаковое целочисленное значение без знака целое)" (tempTime @@ YAAAVTime @ Project2 @@ III @ Z), на которые ссылается функция «класс Project2 :: время & __cdecl Project2 :: operator + = (класс Project2 :: время const &, класс Project2 :: время const &)" (?? YProject2 @ @ YAAAVTime @ 0 @ ABV10 @ 0 @ Z) c: \ Users \ Eon-Gwei \ documents \ visual studio 2013 \ Projects \ C++ III_Project2_GW \ C++ III_Project2_GW \ Time.obj C++ III_Project2_GW
Этот символ не может связываться? Необходимо предоставить фактическое сообщение об ошибке. – Gadi