注册 登录
编程论坛 C++教室

请问下面程序为什么无法编译?

cnwppp 发布于 2011-08-31 09:57, 403 次点击
class Buddy {};

template<class T>
class My
{
    private:
        int i;
    public:
        void play(My<Buddy)& s)
        {
            s.i=3;
        }
};

int main()
{
    My<int> h;
    My<Buddy> me,bud;
    h.play(bud);
    me.play(bud);

}
6 回复
#2
rjsp2011-09-01 08:28
程序代码:
class Buddy {};

template<class T>
class My
{
public:
    void play( My<Buddy>& s )
    {
        s.i=3;
    }
private:
    int i;

    template<class> friend class My;
};

int main()
{
    My<int> h;
    My<Buddy> me;
    My<Buddy> bud;

    h.play(bud);
    me.play(bud);

    return 0;
}
#3
lucky5635912011-09-01 08:32
没有定义play函数吧
#4
lucky5635912011-09-01 08:34
哦,刚才没看到
#5
cnwppp2011-09-01 08:54
请问rjsp用的是什么编译器,谢谢啦!
#6
rjsp2011-09-01 13:21
以下是引用cnwppp在2011-9-1 08:54:42的发言:

请问rjsp用的是什么编译器,谢谢啦!
任何支持标准C++的编译器!!!
我用VC++2008试验过,用g++4.5.0试验过,都正确。
#7
cnwppp2011-09-02 22:20
为什么要加上“template<class> friend class My;”这句呢?
1