标题:初学者。。。求罩。。非静态成员函数的非法调用???
只看楼主
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
结帖率:100%
已结贴  问题点数:20 回复次数:10 
初学者。。。求罩。。非静态成员函数的非法调用???
程序代码:
//自己写着玩的,是关于友元函数
#include<iostream>
class Lovers
{
    friend class Others;
public:
    void kiss_action();
protected:
    void kiss();
private:
};

class Girlfriend :public Lovers
{
public:
    void kiss_action();
protected:
    void kiss();
private:
};

class Boyfriend :public Lovers
{
public:
    void kiss_action();
protected:
    void kiss();
private:
};

class Others
{
    //friend class Girlfriend;
    //friend class Lovers;
public:
    void kiss_other();
protected:
    
private:
};

void Lovers::kiss()
{
    std::cout<<"I want kiss";
}

void Lovers::kiss_action()
{
    Lovers::kiss();
}

void Girlfriend::kiss()
{
    Lovers::kiss_action();
    std::cout<<"my girlfriend  I am a normal boy";
}

void Girlfriend::kiss_action()
{
    Girlfriend::kiss();
}

void Boyfriend::kiss()
{
    Lovers::kiss_action();
    std::cout<<"my boyfriend  I am a gayboy";
}

void Boyfriend::kiss_action()
{
    Boyfriend::kiss();
}

void Others::kiss_other()
{
    Girlfriend::kiss_action();//“Girlfriend::kiss_action”: 非静态成员函数的非法调用
    std::cout<<"I am a third..hehe";
}
int main()
{

    Lovers::kiss_action();//“Lovers::kiss_action”: 非静态成员函数的非法调用
    Girlfriend::kiss_action();//“Girlfriend::kiss_action”: 非静态成员函数的非法调用
    Boyfriend::kiss_action();//“Boyfriend::kiss_action”: 非静态成员函数的非法调用
    Others::kiss_other();
    return 0;
}
搜索更多相关主题的帖子: kiss include public 
2013-03-17 11:22
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
    Lovers::kiss_action();//“Lovers::kiss_action”: 非静态成员函数的非法调用
    Girlfriend::kiss_action();//“Girlfriend::kiss_action”: 非静态成员函数的非法调用
    Boyfriend::kiss_action();//“Boyfriend::kiss_action”: 非静态成员函数的非法调用
不知道你初学到哪一步了...
看过类这章吗?
为什么没有对象?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-17 11:48
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
回复 楼主 gwcome
你都没对象的,难怪要 求罩,哈哈~~~


[fly]存在即是合理[/fly]
2013-03-17 13:38
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
得分:0 
回复 2楼 peach5460
=w= T.T  我有对象 而且有四个。Lovers 是Girlfriend 和Boyfriend的基类。还有个Others类
程序代码:
class Lovers
{
    friend class Others;
public:
    void kiss_action();
protected:
    void kiss();
private:
};

程序代码:
class Girlfriend :public Lovers
{
public:
    void kiss_action();
protected:
    void kiss();
private:
};

class Boyfriend :public Lovers
{
public:
    void kiss_action();
protected:
    void kiss();
private:
};

程序代码:
class Others
{
    //friend class Girlfriend;
    //friend class Lovers;
public:
    void kiss_other();
protected:
    
private:
};

小菜小菜
2013-03-17 14:31
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
得分:0 
回复 2楼 peach5460
哦。。。我好像没有定义对象,只定义了类。。。。=W= TWT

小菜小菜
2013-03-17 14:33
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
得分:0 
回复 3楼 azzbcc
初学哈 多照顾

小菜小菜
2013-03-17 15:02
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
得分:0 
回复 2楼 peach5460
程序代码:
//自己写着玩的,是关于友元函数
#include<iostream>
class Lovers
{
    
public:
    void kiss_action();
protected:
    void kiss();
private:
    
};

class Girlfriend :public Lovers
{
friend class Others;    
public:
    void kiss_action();
protected:
    void kiss();
    
private:
    
};

class Boyfriend :public Lovers
{
public:
    void kiss_action();
protected:
    void kiss();
private:
};

class Others
{
    
public:
    void kiss_other();
protected:
    
private:
};

void Lovers::kiss()
{
    std::cout<<"I want kiss";
}

void Lovers::kiss_action()
{
    Lovers::kiss();
}

void Girlfriend::kiss()
{
    Lovers::kiss_action();
    std::cout<<"my girlfriend  I am a normal boy";
}

void Girlfriend::kiss_action()
{
    Girlfriend::kiss();
}

void Boyfriend::kiss()
{
    Lovers::kiss_action();
    std::cout<<"my boyfriend  I am a gayboy";
}

void Boyfriend::kiss_action()
{
    Boyfriend::kiss();
}

void Others::kiss_other()
{
    Girlfriend::kiss();//“Girlfriend::kiss_action”: 非静态成员函数的非法调用
    std::cout<<"I am a third..hehe";
}
int main()
{
    Lovers lovers;//定义对象 ...TAT...
    lovers.kiss_action();
    Girlfriend girlfriend;
    girlfriend.kiss_action();
    Boyfriend boyfriend;
    boyfriend.kiss_action();
    Others others;
    others.kiss_other();
    return 0;
}

我定义了对象  还是有错

小菜小菜
2013-03-17 15:02
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:0 
你怎么这么喜欢::这个运算符,你知道这个运算符什么意思吗?
你同一个类中调用一个protected函数还要加什么“类名::”?
在子类中要重写父类的函数你怎么不用虚函数?或者直接new覆盖掉,看样你对类真是了解的不深。
个人愚见,如有不对还望见谅。
2013-03-17 15:45
gwcome
Rank: 2
来 自:尼玛星球
等 级:论坛游民
帖 子:43
专家分:33
注 册:2013-1-22
得分:0 
回复 8楼 shmilyflf
不瞒您说这是我第一个用类写的函数,不吝赐教呀。具体说说我哪里些写错了

小菜小菜
2013-03-17 16:03
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:10 
#include<iostream>
using namespace std;//这里加这一句后面的输出前面就不用加std::了
class Lovers
{
     
 public:
     void kiss_action();
 protected:
     void kiss();//没有private的成员就别写了,虽然写了也不会有错,不是在浪费时间吗   
};
 
class Girlfriend :public Lovers
{
 friend class Others;   
 public:
     void kiss_action();
 protected:
     void kiss();     
};
 
class Boyfriend :public Lovers
{
 public:
     void kiss_action();
 protected:
     void kiss();
};
 
class Others
{
 public:
     void kiss_other();
};
 
void Lovers::kiss()
{
     cout<<"I want kiss"<<endl;
}
 
void Lovers::kiss_action()
{
     kiss();//像这种调用本类中函数的时候就不用加“类名::”了
}
 
void Girlfriend::kiss()
{
     Lovers::kiss_action();//这个加“Lovers::”是因为你要调用父类中的kiss_action()函数,
                            //而本类中还有个同名函数,如果不加的话是调用本类中的函数。
     cout<<"my girlfriend  I am a normal boy"<<endl;
}
 
void Girlfriend::kiss_action()
{
     kiss();
}
 
void Boyfriend::kiss()
{
     Lovers::kiss_action();
     cout<<"my boyfriend  I am a gayboy"<<endl;
}
 
void Boyfriend::kiss_action()
{
     kiss();
}
 
void Others::kiss_other()
 {
     Girlfriend gf;//非静态成员得用对象调用
     gf.kiss();//“Girlfriend::kiss_action”: 非静态成员函数的非法调用
     cout<<"I am a third..hehe"<<endl;
 }
 int main()
 {
     Lovers lovers;//定义对象 ...TAT...
     lovers.kiss_action();
     Girlfriend girlfriend;
     girlfriend.kiss_action();
     Boyfriend boyfriend;
     boyfriend.kiss_action();
     Others others;
     others.kiss_other();
     return 0;
 }
 //对于虚函数什么的,你看看书就会知道怎么用的。
2013-03-17 17:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401071-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066604 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved