关于C++中将结构体转为类,下面是具体的实例,谢谢大家,对的再多加分:
发布网友
发布时间:2022-04-21 09:50
我来回答
共3个回答
热心网友
时间:2023-11-09 06:47
struct student
{
public:
int id;
float gpa;
student(int m,float n):id(m),gpa(n){}
};
改成如下:
class student
{
public:
int id;
float gpa;
student(int m=0,float n=0):id(m),gpa(n){}
};
热心网友
时间:2023-11-09 06:48
#include<iostream>
#include<cstdlib>
using namespace std;
struct student
{
public:
int id;
float gpa;
student(){}; // 增加这个就可以了,楼上的答案也行
student(int m,float n):id(m),gpa(n){}
};
template<typename T>
class Store
{
private:
T item;
int haveValue;
public:
Store(void);
T getItem(void);
void PutElem(T x);
};
template<typename T>
Store<T>::Store(void):haveValue(0){}
template<typename T>
T Store<T>::getItem(void)
{
if(haveValue==0)
{
cout<<"No item present!"<<endl;
exit(1);
}
return item;
}
template<typename T>
void Store<T>::PutElem(T x)
{
haveValue++;
item=x;
}
int main()
{
student g(1000,4.5);
//g.gpa=4.5;g.id=1000;
Store<int>S1,S2;
Store<double>D;
Store<student>S3;
S1.PutElem(3);
S2.PutElem(-7);
cout<<S1.getItem()<<" "<<S2.getItem()<<endl;
S3.PutElem(g);
cout<<S3.getItem().id<<endl;
cout<<D.getItem()<<endl;
return 0;
}
热心网友
时间:2023-11-09 06:48
在c++中,结构体就是一种特殊的类,你完全可以把它当作一个类来使用,如果你要改成类的话,我建议你把结构体的声明struct换成class吧。
你还需要在你的strudent类中添加一个无参数的构造函数:
class student
{
public:
int id;
float gpa;
student() {} //添加这个。
student(int m=0,float n=0):id(m),gpa(n){}
};追问为什么构造函数要有缺省值啊?student(int m,float n):id(m),gpa(n){}这样为什么就不正确呢?谢谢