创建一个可变大小的类对象数组,没有默认构造函数

时间:2016-01-30 20:58:52

标签: c++ arrays

我整个上午都在我的CS辅导实验室度过了他们没有帮助,所以我希望那里的人可以轻推我。我必须使用这个课程。

#ifndef WORD_H
#define WORD_D
#include <iostream>

class Word
{
private:
char* ptr_;
int len_;

public:
Word(const char* word);
~Word();
char GetFirstLetterLower();
char* GetWord();
};


#endif WORD_H

我已经创建了一个指针数组,用于存储另一个数组的指针。

g_wordArray = new Word *[g_arrSz];   
//g_arrSz is the length all arrays need to be 

现在我需要创建一个长度为G_aarSz的第二个Word类数组。

导师一直试图让我使用

Word secondArray[g_arrSz];

但这不起作用,因为长度不是常数。

我也试过这个

Word* secondArray = new int[g_arrSz];

但没有运气。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你快到了。你需要做的是创建一个数组,但是不是int的数组。

所以而不是

def something[A, B, F[_]: Functor](f: A => B, x: A)

你需要这样做:

Word* secondArray = new int[g_arrSz];

做这种老式数组通常是一个坏主意,除非这是一个学习的例子或某些特定情况,你应该使用std容器来创建你的数组。例如,看看std :: vector或std :: array。使用vector,你可以像这样声明你的Word数组:

Word* secondArray = new Word[g_arrSz];

答案 1 :(得分:0)

你可以创建一个没有默认构造函数的对象向量 - 显然你不能用默认的构造对象填充它。

例如:

std::vector<Word> words;
for (int i = 0; i < g_arrSz; ++i)
    words.emplace_back("bob");