C++类类型指针数组
来源:百度知道 编辑:UC知道 时间:2024/06/16 18:10:52
#include<iostream.h>
class pp
{int i;};
void creat()
{
int m=5;
pp *P[m];
for(int i=0;i<5;i++)
{
P[i]=new pp;
}
}
void main()
{
creat();
}
提示错误:
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2057: expected constant expression
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2466: cannot allocate an array of constant size 0
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2133: 'P' : unknown size
Error executing cl.exe.
程序若改为:
#include<iostream.h>
class pp
{int i;};
void creat()
{
pp *P[5];//常数
for(int i=0;i<5;i++)
{
P[i]=new pp;
}
}
void main()
{
creat();
}
无错
class pp
{int i;};
void creat()
{
int m=5;
pp *P[m];
for(int i=0;i<5;i++)
{
P[i]=new pp;
}
}
void main()
{
creat();
}
提示错误:
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2057: expected constant expression
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2466: cannot allocate an array of constant size 0
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(7) : error C2133: 'P' : unknown size
Error executing cl.exe.
程序若改为:
#include<iostream.h>
class pp
{int i;};
void creat()
{
pp *P[5];//常数
for(int i=0;i<5;i++)
{
P[i]=new pp;
}
}
void main()
{
creat();
}
无错
/*能不能说的具体一点呢?请问同学是不懂用法呢还是需要一个例子来理解?
其实类指针数组就是指向类的指针的一个指针,是二级指针。
给写一个例子吧*/
#include<iostream>
using namespace std;
class CStudent
{
char *m_name;
int m_age;
public:
CStudent(char *name="",int age=0);
void Displayinfo() const;
};//简单的定义一个学生类
CStudent::CStudent(char *name,int age)
{
m_name=new char[strlen(name)+1];
strcpy(m_name,name);
m_age=age;
}
void CStudent::Displayinfo() const
{
cout<<m_name<<" "<<m_age<<endl;
}
int main()
{
int i,num;
CStudent Student1("同学1",18),Student2("同学2",19),Student3("同学3",20);
CStudent ** aStudent;//申请一个二级指针
cin>>num;
aStudent=new CStudent *[num];
aStudent[0]=&Student1;
aStudent[1]=