我需要使用模板吗?

Do i need to use template?

本文关键字:      更新时间:2023-10-16

祝你今天过得愉快!:)

我得到了这个main()代码,我需要使它工作。

1)我只能使用一个类;2)避免代码重复3)不能修改main()函数

我想问的几个问题:

  1. 我需要使用模板吗?
  2. 我怎么能得到一个以上的对象(狗)。/人)如果我只能使用一个类?:)

    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;
}
相关文章:
  • 没有找到相关文章