朋友方法错误

时间:2014-04-19 06:50:26

标签: c++

我收到此错误消息:

'friend' used outside of class.

我的标题有这一行

private:
        friend ostream& operator << (ostream&, card&);

并在cpp文件中

friend ostream& operator << (ostream& outStream, card& card)
{
    Suit suit=card.getSuit();
    Rank rank=card.getRank();
    string str;
    switch(rank)
        { /*...*/ }
    outStream<<str;
    return outStream;
像这样。

我搜索过,但大多数情况下它表示我需要同一个班级而没有朋友,但我尝试了,但它没有用。你能给我一些建议吗?

谢谢

1 个答案:

答案 0 :(得分:8)

删除friend文件中的.cpp。只需要(并允许)头文件中的class定义。

在头文件中,您声明操作员是您的朋友:

private:
    friend ostream& operator << (ostream&, card&);

这是该类的属性。

在源文件中,只需定义运算符&#34;通常&#34;:

ostream& operator << (ostream& outStream, card& card)
{
    // ...
}

在这里,friend没有意义:谁的朋友?多个类可能会将运算符声明为朋友。