struct Student { // 结构体Student int id; //学号 float gpa; //平均分 }; //定义类模板及函数,函数在类体外定义 template class Store //类模板:实现对任意类型数据进行存取 裁判测试程序样例: int main() { try { Store<int> s1, s2; //定义两个Store<int>类对象,其中数据成员item为int类型 s1.putElem(3); //向对象S1中存入数据(初始化对象S1) s2.putElem(-7); //向对象S2中存入数据(初始化对象S2) cout << s1.getElem() << " " << s2.getElem() << endl; //输出对象S1和S2的数据成员 Student g = { 1000, 23 }; //定义Student类型结构体变量的同时赋以初值 Store<Student> s3; //定义Store<Student>类对象s3,其中数据成员item为Student类型 s3.putElem(g); //向对象D中存入数据(初始化对象D) cout << "The student id is " << s3.getElem().id << endl; //输出对象s3的数据成员 Store<double> d; //定义Store<double>类对象s4,其中数据成员item为double类型 cout << "Retrieving object d... "; cout << d.getElem() << endl; //输出对象D的数据成员 //由于d未经初始化,在执行函数D.getElement()过程中导致程序终止 } catch (...) { cout << "get item error!"; } return 0; }用c++程序实现
时间: 2024-03-22 19:38:19 浏览: 21
EDA/PLD中的C语言结构体定义
以下是实现上述功能的C++代码:
```cpp
#include <iostream>
using namespace std;
struct Student { // 结构体Student
int id; //学号
float gpa; //平均分
};
template<class T>
class Store //类模板:实现对任意类型数据进行存取
{
private:
T item;
bool haveValue;
public:
Store() : haveValue(false) {}
T getElem();
void putElem(T x);
};
template<class T>
T Store<T>::getElem()
{
if (!haveValue) {
throw string("No value present.");
}
return item;
}
template<class T>
void Store<T>::putElem(T x)
{
haveValue = true;
item = x;
}
int main()
{
try {
Store<int> s1, s2; //定义两个Store<int>类对象,其中数据成员item为int类型
s1.putElem(3); //向对象s1中存入数据(初始化对象s1)
s2.putElem(-7); //向对象s2中存入数据(初始化对象s2)
cout << s1.getElem() << " " << s2.getElem() << endl; //输出对象s1和s2的数据成员
Student g = { 1000, 23 }; //定义Student类型结构体变量的同时赋以初值
Store<Student> s3; //定义Store<Student>类对象s3,其中数据成员item为Student类型
s3.putElem(g); //向对象s3中存入数据(初始化对象s3)
cout << "The student id is " << s3.getElem().id << endl; //输出对象s3的数据成员
Store<double> d; //定义Store<double>类对象s4,其中数据成员item为double类型
cout << "Retrieving object d... ";
cout << d.getElem() << endl; //输出对象d的数据成员
//由于d未经初始化,在执行函数d.getElement()过程中导致程序终止
}
catch (string e) {
cout << "Exception: " << e << endl;
}
return 0;
}
```
阅读全文