我有一個叫做分數的類,我宣佈一些運營商爲朋友。我事先聲明瞭朋友操作員,因爲http://www.parashift.com/c++-faq-lite/templates.html#faq-35.16告訴我要這樣做,但它只修正了+, - ,*和/。 < <和>>依然不起作用。模板類+運營商+朋友=無法解析的外部
template <class T> class Fraction;
template <class T> Fraction<T> operator+ (Fraction<T> const& left, Fraction<T> const& right);
template <class T> Fraction<T> operator- (Fraction<T> const& left, Fraction<T> const& right);
template <class T> Fraction<T> operator* (Fraction<T> const& left, Fraction<T> const& right);
template <class T> Fraction<T> operator/ (Fraction<T> const& left, Fraction<T> const& right);
template <class T> ostream& operator<< (const ostream& output, Fraction<T> const& value);
template <class T> istream& operator>> (const ostream& input, Fraction<T> const& value);
和類:
template <class T>
class Fraction
{
...
friend Fraction<T> operator+ <>(const Fraction<T>& left, const Fraction<T>& right);
friend Fraction<T> operator- <>(const Fraction<T>& left, const Fraction<T>& right);
friend Fraction<T> operator* <>(const Fraction<T>& left, const Fraction<T>& right);
friend Fraction<T> operator/ <>(const Fraction<T>& left, const Fraction<T>& right);
friend ostream& operator<< <>(const ostream& output, const Fraction<T> value);
friend istream& operator>> <>(const istream& input, Fraction<T> value);
}
template <class T> ostream& operator<< <>(const ostream& output, const Fraction<T>& value)
{
output << value.Numerator << '/' << value.Denominator;
return output;
}
template <class T> istream& operator>> <>(const istream& input, Fraction<T>& value)
{
T n, d, char seperator;
cin >> n >> seperator >> d;
value.SetNumerator(n);
value.SetDenominator(d);
return input;
}
+1抱怨這麼多。希望別人upvote你,所以你可以停止抱怨;) – slashmais 2010-10-07 21:27:26
啊,嗯,我回答了一個「賞金」的問題只是爲了。希望(但問題太模糊了,我不知道我的答案是否覆蓋了它),它會讓我超過所需的50分。我發現StackOverflow的這個特別的方面是完全令人困惑的,但也許它增加了一些類似遊戲的維度 - 賺錢點?或者它可能是一款反垃圾郵件設備?不管怎樣,謝謝! :-) – 2010-10-07 22:04:31