请帮忙看看错误吧。。。

#include
#include
using namespace std;
class Person
{
private:
char *name;
public:
Person(char *n1):name(n1){strcpy(name,n1);}
void PrintName() {cout<<"The name is:";}
};
class Student:public Person
{
private:
long int Number;
public:
Student(char *n2,long int n3):Person(n2) {Number=n3;}
void PrintInfo()
{
cout<<"The number is:";
}
};
int main()
{
Person a("张三");
cout<<a.PrintName<<endl;
Student b("张三",142180217);
cout<<b.PrintInfo<<endl;
return 0;
}

 #include<iostream>
#include<string>
using namespace std;
class Person
{
private:
    char *name;
public:
    Person(char *n1):name(n1){strcpy(name,n1);}
    void PrintName() {cout<<"The name is:" << name; }
};
class Student:public Person
{
private:
    long int Number;
public:
    Student(char *n2,long int n3):Person(n2) {Number=n3;}
    void PrintInfo()
    {
        cout<<"The number is:" << Number;
    }
};
int main()
{
        char ch[] = "张三";
    Person a(ch);
    a.PrintName();
        cout << endl;
    Student b(ch,142180217);
    b.PrintInfo();
        cout << endl;
    return 0;
}

name没有空间,怎么放数据?

name 没有分配内存空间,至少要 malloc 或 new 一下吧。

http://codepad.org/tDXOotfn

The name is:张三
The number is:142180217

char *name;
Person(char *n1):name(n1){strcpy(name,n1);}

很明显没有初始化指针,是不能直接使用的;
Person(char *n1):name(n1)
{
name = (char *)malloc(sizeof(char))
strcpy(name,n1);
}

好像name没有分配空间。

name 没有分配内存空间,既然用了std,就把 char* 换成 std::string