我正在尝试基于《有效C ++》这本书来创建一个表示有理数的类,但是当我尝试使用重载运算符实现乘法时,会收到消息“警告未定义的引用...”。 / p>
我已经尝试定义构造器,但是由于我使用默认值对其进行了声明,因此不允许我在.cpp文件中实现它(我不确定这是否是原因)。
// Rational.h
#ifndef RATIONAL
#define RATIONAL
class Rational
{
public:
// Constructor is not explicit; allows implicit int-to-Rational conversions
Rational(int numerator = 0, int denominator = 1);
// Accessors for numerator and denominator. Functions return integer.
int numerator() const;
int denominator() const;
private:
// Numerator and denominator
int n, d;
};
#endif
//Rational.cpp
#include "Rational.h"
#include <iostream>
const Rational operator*(const Rational& lhs, const Rational& rhs)
{
return Rational(lhs.numerator()*rhs.numerator(), lhs.denominator()*rhs.denominator());
}
int main(int argc, char* argp[])
{
}
Rational.cpp :(。text + 0x21):警告:未定义对»Rational :: denominator()const«的引用 Rational.cpp :(。text + 0x2b):警告:未定义对»Rational :: denominator()const«的引用 Rational.cpp :(。text + 0x36):警告:对»Rational :: numerator()const«的未定义引用 Rational.cpp :(。text + 0x40):警告:未定义对»Rational :: numerator()const«的引用 Rational.cpp :(。text + 0x4f):警告:未定义对»Rational :: Rational(int,int)«的引用 collect2:错误:ld返回1退出状态