使用模板类

时间:2017-09-23 17:10:20

标签: c++

我在模板类之间的继承方面遇到了一些麻烦。我从一个简单的代码开始,该代码具有父类和继承该父类的子类。子类能够访问父类的受保护数据成员。

#include <iostream>
using namespace std;

# define LENGTH 10

class Parent {
protected:
    int * array[LENGTH] = {NULL};
};


class Child : public Parent {
public:
    void addItem(int * item) {
        for (int i = 0; i < LENGTH; i++) {
            if (array[i] == NULL) {
                array[i] = item;
            }
        }
    }
};

int main() {
    Child obj;
    int *temp = new int(5);
    obj.addItem(temp);
}

这编译并运行得很好。但后来我尝试用模板类做同样的事情。

#include <iostream>
using namespace std;

# define LENGTH 10
template <typename T>
class Parent {
protected:
    T * array[LENGTH] = {NULL};
};

template <typename T>
class Child : public Parent<T> {
public:
    void addItem(T * item) {
        for (int i = 0; i < LENGTH; i++) {
            if (array[i] == NULL) {
                array[i] = item;
            }
        }
    }
};

int main() {
    Child obj;
    int *temp = new int(5);
    obj.addItem(temp);
}

第二个程序无法编译,我收到的错误是:&#39; array&#39;在这方面没有申明。我不知道为什么模板类会改变继承的工作方式。除了父类中的公共get / set方法之外,有没有办法像这样使用继承?

0 个答案:

没有答案