如下面的这套代码:
MyClass.h
#pragma once
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template<typename T>
class MyClass{
private:
T x;
public:
MyClass(T a) :x(a){}
T& getX(){
return x;
}
friend ostream& operator << (ostream &os, MyClass myclass){
//os << "(" << myclass.x << "," << myclass.y << ")";
for (int i = 0; i < myclass.getX().size(); i++){
os << myclass.x[i] << endl;
}
return os;
}
};
main.cpp
#include "MyClass.h"
void main(){
vector<int> inVe;
inVe.push_back(1);
inVe.push_back(2);
inVe.push_back(3);
inVe.push_back(4);
MyClass<vector<int>> myclassVc(inVe);
cout << myclassVc;
system("pause");
}
这里,来看下局部变量的值:
发现还真了可以用。
这种模板操作感觉好奇怪啊!
也不知道这么写好不好!
根据网上的代码可以知道,一般写容器模板应该这样做:
MyClass.h
#pragma once
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template<typename T>
class MyClass{
private:
vector<T> x;
public:
MyClass(){}
vector<T>& getX(){
return x;
}
friend ostream& operator << (ostream &os, MyClass myclass){
//os << "(" << myclass.x << "," << myclass.y << ")";
for (int i = 0; i < myclass.getX().size(); i++){
os << myclass.x[i] << endl;
}
return os;
}
};
main.cpp
#include "MyClass.h"
void main(){
MyClass<int> myclassVc;
myclassVc.getX().push_back(1);
myclassVc.getX().push_back(2);
myclassVc.getX().push_back(3);
myclassVc.getX().push_back(4);
myclassVc.getX().push_back(5);
cout << myclassVc;
system("pause");
}