我需要使用模板吗?
Do i need to use template?
祝你今天过得愉快!:)
我得到了这个main()代码,我需要使它工作。
1)我只能使用一个类;2)避免代码重复3)不能修改main()函数
我想问的几个问题:
- 我需要使用模板吗?
-
我怎么能得到一个以上的对象(狗)。/人)如果我只能使用一个类?:)
int main() { Person p("Jon",22); Dog d("Rex","Beagle"); p.printInfo(); d.printInfo(); return 0; }
不行,你不能用模板这样做。看来你对什么是模板有误解。
这是一个类模板:
template <typename T> struct Foo { T value; }
注意这不是一个类。它只是一个模板。只有当你实例化模板时,例如
Foo<int> f;
Foo<double> g;
编译器就会创建必要的代码,也就是
struct Foo<int> { int value; }
struct Foo<double> { double value; }
是两个类,而不是一个!
如果你真的想在一个类中得到这个,唯一的方法就是使用这样的别名:
typedef Dog Person;
然而,我强烈怀疑这是练习的重点。如果它真的是关于模板的,我唯一的解释是你误解了一些东西,你实际上应该使用两个类(可能)应该是同一个模板的两个不同实例化,例如像这样的…
typedef Foo<int> Dog;
typedef Foo<double> Person;
我想出了这个办法,也许能帮到别人。
#include <iostream>
using namespace std;
#include <cmath>
template <class T1, class T2>
class Person {
T1 attr1;
T2 attr2;
public:
Person(T1 a1, T2 a2) {
attr1 = a1; attr2 = a2;
}
void printInfo() {
cout <<"Hi my name is "<< attr1 << " and i'm ' " << attr2 << endl;
}
};
typedef Person<string,int> Personn;
typedef Person<string,string> Dog;
int main() {
Personn p("Jon",22);
Dog d("Rex","Beagle");
p.printInfo();
d.printInfo();
return 0;
}
相关文章:
- 没有找到相关文章