C++ 构造错误:‘;数据’;未在此范围中声明
我不知道为什么子类不能使用父类的变量。我曾经使用过java,但java中没有。我是C++初学者;C++ 构造错误:‘;数据’;未在此范围中声明,c++,C++,我不知道为什么子类不能使用父类的变量。我曾经使用过java,但java中没有。我是C++初学者; 父类 #include <iostream> template<class T> class List{ protected: int length; T *data; public: List() { length = 0; data = nullptr; std::cout << "父
父类
#include <iostream>
template<class T>
class List{
protected:
int length;
T *data;
public:
List() {
length = 0;
data = nullptr;
std::cout << "父类构造函数..." << std::endl;
}
virtual ~List() {
length = 0;
data = nullptr;
std::cout << "父类析构函数..." << std::endl;
}
}
#包括
模板
班级名单{
受保护的:
整数长度;
T*数据;
公众:
列表(){
长度=0;
数据=空PTR;
std::cout使用此->数据
。这将解决您的问题。从
- 将调用从
f()
更改为this->f()
。由于这在模板中始终是隐式依赖的,因此this->f是依赖的,因此查找将推迟到模板实际实例化,此时将考虑所有基类
- 在调用
f()
之前,使用B::f;
插入
将调用从f()
更改为B::f()
。但是,请注意,如果f()是虚拟的,则这可能无法满足您的需要,因为它会禁用虚拟分派机制
试试<代码> ->数据=…./Cord>。请参见My.Ex.!因为我必须用C/C++编写数据结构,但我以前使用java,我是C++初学者。我去看看。
#include "List.h"
template<class T>
class ArrayList : public List<T> {
private:
const int INIT_SIZE = 10;
const int INCREMENT_SIZE = 10;
int maxSize;
public:
ArrayList() {
std::cout << "子类构造函数..." << std::endl;
data = new T[INIT_SIZE];
maxSize = INIT_SIZE;
}
virtual ~ArrayList() {
std::cout << "子类析构函数..." << std::endl;
maxSize = 0;
}
}
In constructor ‘ArrayList<T>::ArrayList()’:
error: ‘data’ was not declared in this scope
data = new T[INIT_SIZE];
^~~~