C+++给一个类的构造函数传一个数组,怎么弄?

#include<iostream>
#include<string>
struct stu{
char name[10];
int math;
};
class student{
public: student(stu stu[]){
for(int i=0;i<10;i++)num[i]=stu[i];
}
stu num[10];
};
int main(){
stu num[10]={
{"张一",95},{"张二",90},{"张山",89},{"张四",80},{"张五",79}
};
student stu1=new student(stu num[]);//这里有问题,想把数组传给类的构造函数啊?
return 0;
}

第1个回答  推荐于2016-01-13
#include<iostream>
#include<string>
using namespace std;
struct stu{
char name[10];
int math;
};
class student{
public:
student(stu stu[]){
for(int i=0;i<10;i++)
num[i]=stu[i];
}
void display()
{
for(int i=0;i<5;i++)
{
cout<<num[i].name<<" : "<<num[i].math<<endl;
}
}
stu num[10];
};
int main(){
stu num[10]={ //这里只有5个元素,数组声明为stu num[5]就行咯~
{"张一",95},{"张二",90},{"张山",89},{"张四",80},{"张五",79}
};
student stu1(num); //直接这么写就行了~
stu1.display();
return 0;
}本回答被提问者采纳
第2个回答  2013-03-21
student stu1=student(num);
或者student* stu1=new student(num);
传数组实际传的是数组的头指针 num代表该指针。
用new后返回的是该类的指针哦。
第3个回答  2013-03-21
--> student stu1=new student(num);追问


试过了,不行啊,再请教啦?

追答

public: student(stu stu[]) -->
public: student(stu stu1[])

变量和类型重名了。
student stu1=new student(num); -->
student *stu1=new student(num);

C+++给一个类的构造函数传一个数组,怎么弄?
int main(){ stu num[10]={ \/\/这里只有5个元素,数组声明为stu num[5]就行咯~{"张一",95},{"张二",90},{"张山",89},{"张四",80},{"张五",79} };student stu1(num); \/\/直接这么写就行了~stu1.display();return 0;} ...

c++怎么给一个类里的结构体中的变量赋值
这个应该算嵌套类的使用了,首先你这个结构申明是私有(private)的吗?如果是的话,只能用构造函数逐一赋值:class person{ string name;string gender;struct brith { int year; int month; int day; };brith b;\/\/创建实例 public:void set(int,int,int);person (){name="xiaoming"...

在C++中一个类的构造函数是否可调用另一个类的构造函数?
};void main(){ B b;\/\/定义B的对象自动调用B的构造函数,B的构造函数 \/\/里面定义了A的对象自动调用A的构造函数。} 程序在vc6.0调试通过,并且证明了C++中一个类的构造函数可以调用另一个类的构造函数。

c++中,在一个类中参数传递中出现的一个问题
因为你没有重载Point类的赋值函数,执行 p1=((p1.getx()-X),(p1.gety()+Y));时,会进行复制构造函数的操作,也就是说系统会现调用构造函数生成一个临时变量(是具体编译平台,有些不生成临时变量),再将临时变量赋给P1,这里执行过程中出错了。解决方法1:将 p1=((p1.getx()-X),(p1....

在c++中如何调用数组对象的构造函数
\/\/对象数组的初始化请看该函数 class student { public:student(string name){ m_strname=name;} student(){} void display(){ cout<<"student name:"<<m_strname<<endl;} private:string m_strname;};void main(){ student stu[3]={student("zhangsan"),student("lisi")};stu[0]....

C++ 派生类构造函数的调用顺序的一道题目
答案:类A的默认构造函数 类A的默认构造函数 类B的默认构造函数 类A的默认构造函数 类A的默认构造函数 类B的默认构造函数 类A的构造函数 类A的构造函数 类B的构造函数 类B的析构函数 类A的析构函数 类A的析构函数 类A的构造函数 类A的构造函数 类B的构造函数 类B的析构函数 类A的析构函数...

c++编写一个类一定要加上构造函数吗?
这里面涉及到对语言的理解,可以这么说,C++ 里面的所有类都有构造函数。但是你写的时候可以不写构造函数,但你构造出来的类还是有构造函数。这是因为你不写构造函数的话,其实 C++ 会自动的帮你加上一个构造函数,这个就是默认的构造函数。再贴一段百科的定义你就懂了:默认构造函数(default ...

C++如何在一个类的成员函数中调用另一个类的成员函数
1、首先声明如下所示的类,类内部定义一个public的整型数据成员。2、主函数中定义指向类的数据成员的指针。3、声明类的对象,该对象变量调用指向类的数据成员的指针进行赋值操作。4、然后输出打印类的数据成员,从结果看,上一步的操作赋值成功。5、定义类的指针,通过指针指向对象成员的指针来进行赋值。...

C++类中使用构造函数初始化char数组
for(i=1;i<=3;i++){ p[i].display();} 数组下标从0 开始 所以应该是 for(i=0;i<3;i++)class people { \/\/没有 public 默认为private char name[7];char number[11];int age;我给你改改 稍后给你发过去

C++ 类中的类成员变量怎么调用带参数的构造函数来初始化?
\/\/这样声明 \/***\/ };int main(int argc, char* argv[]){ \/***\/ B b; \/\/使用B的默认构造函数 B bb(10); \/\/使用B的带参构造函数 \/***\/ b.print();bb.print();return 0;}

相似回答