【发布时间】:2022-01-11 07:19:27
【问题描述】:
我很抱歉问这个问题,因为我确信它已经在其他地方得到了回答。我正在尝试在我的类的构造函数中初始化一个对象指针容器。容器是一个数组模板,构造函数的类是A,对象类型是类P。
A.cpp:
#include 'Array.h'
#include 'P.h'
A::A(){
Array<P*> ps = ?
P.cpp:
P::P(string n){
this->name = n;
}
Array.h:
using namespace std;
template <typename T>
class Array {
public:
Array();
~Array();
void add(int);
int get(int index);
int getSize();
bool isFull();
int& operator[] (int);
private:
int size;
int* elements;
static int MAX_ARR = 256;
};
template <typename T>
Array<T>::Array(){
elements = new int[MAX_ARR];
size = 0;
}
template <typename T>
Array<T>::~Array(){
delete [] elements;
}
template <typename T>
void Array<T>::add(int t){
if (size >= MAX_ARR) return;
elements[size++] = t;
}
template <typename T>
int Array<T>::getSize(){
return size;
}
template <typename T>
bool Array<T>::isFull(){
return size >= MAX_ARR;
}
template <typename T>
int& Array<T>::operator[](int index){
if (index < 0 || index >= size) {
cerr<<"Array index out of bounds"<<endl;
exit(0);Array
}
return elements[index];
}
想知道问号中应该包含什么/如何正确初始化所述成员变量。 P 类很简单,只有一个字符串作为其构造函数的参数。
【问题讨论】:
-
此问题显示的代码不符合 Stackoverflow 显示 minimal reproducible example 的要求。因此,这里的任何人都不太可能最终回答这个问题。但最多只能猜测。你需要edit你的问题来展示一个最小的例子,不超过一两页代码(“最小”部分),其他人都可以剪切/粘贴完全如图所示,编译、运行和重现所描述的问题(“可重现”部分,这包括任何辅助信息,如程序的任何输入)。请参阅How to Ask 了解更多信息。
-
应删除当前设计的
Array<P*> ps = ?。ps可能应该是A类中的类成员变量。尽管您很可能想选择一个更好的名字。在 A 构造函数中,您可能想要调用 ps.add(),但不清楚您希望从哪里获取要添加的数据。
标签: c++ c++11 templates constructor member-variables