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

无效的非静态成员,,,求大神 求解

蓝色的blue 发布于 2014-11-22 09:46, 743 次点击
#include<iostream>
#include<string>
using namespace std;
struct PersonData
{
    string name;
    PersonData*child;
    PersonData*bor;
};
class FamilyTree
{
public:
    FamilyTree()
    {
        Ancestor=new PersonData;
        cout<<"请输入祖先的名字\n";
        cin>>Ancestor->name;
    }
    void CreatPerson(PersonData*person=Ancestor);
    bool Getinfo(PersonData*);
    void disPlay(PersonData*person=Ancestor);//输出全部成员信息
public:
    PersonData*Ancestor;
};
编译出现“error: invalid use of non-static data member 'FamilyTree::Ancestor'|”的错误,,不知道怎么搞的,,,
3 回复
#2
天使梦魔2014-11-22 10:50
无法得到默认值(编译器不允许),奇怪的是你想做什么呢,使用-〉不是一样的么?
默认参数只能是由外部传来的static
void CreatPerson(PersonData*person=Ancestor);
看上去你想用person指针去操作。
但使用Ancestor->(成员)也属于同样操作
#3
peixiao2014-11-23 12:13
我用VC6.0帮你编译了一下,发现吧私有成员改为static就可以了
#4
天使梦魔2014-11-23 12:57
别用static符号,这样做会让函数静态化,而后果是编译器会以为该函数来自外部dll或者lib接口。
1