回 帖 发 新 帖 刷新版面

主题:非静态成员函数非法调用

#include <iostream>
using namespace std;
class student
{
private:int age;
public:char sex;
public:int Getage();
       student(int a,char s)
       {
            age=a;
            sex=s;
       }
};
class graduatestudent:public student
{
private:int stunum;
public:void Getnum();
       graduatestudent(int a,char s,int t):student(a,s)
       {
           stunum=t;
       }
};
int student::Getage()
{
    return age;
}
void graduatestudent::Getnum()
{
    cout<<student::Getage();
    cout<<sex;
    cout<<stunum;
}
void main()
{
    graduatestudent s(1,'g',10);
    graduatestudent::Getnum();
    
}

回复列表 (共2个回复)

沙发

graduatestudent::Getnum(); 既然是非静态member fun,这个方式就有问题了吧。s.Getnum()
另外,LZ的代码写的很另类。我自认为自己的代码很另类,您比我还高。给您一个示范,如果喜欢可以这么写,别人看着可能会舒服些。
[code=c]
#include <iostream>
#include <string>

class student
{
public:
    typedef enum sex { male, female};
    student(int nage, sex sx)
        : _age(nage), _stu_sex(sx) {}
    int GetAge() const { return _age; }
protected:
    int _age;
    sex _stu_sex;
};

class graduate_stu : public student
{
public:
    graduate_stu(int nage, sex sx, int num)
        : student(nage, sx), _stu_num(num) {}
    void GetNum() const
    {
        std::cout << "the student age is : " << GetAge() << std::endl;
        std::cout << "sex: " << static_cast<std::string>(_stu_sex ? "female" : "male") << std::endl;
        std::cout << "the student num is : " << _stu_num << std::endl;
    }
private:
    int _stu_num;
};

int main(int, char **, char **)
{
    graduate_stu stu1(25 , student::female, 1001);
    stu1.GetNum();
}
[/code]

板凳

真的不好意思.昨天晚上我就意识到我犯了一个很白痴的错误.谢谢你的指点哈!

我来回复

您尚未登录,请登录后再回复。点此登录或注册