具有向量作为参数的构造函数的对象向量

时间:2018-10-19 20:39:23

标签: c++ std

我的代码如下:

struct Word
{
    Word(std::vector<char> newword);
};

int main()
{
    int x = 42;
    char nice_char_array[1337];
    std::vector<char> current_word;
    std::vector<Word> wordlist;

    current_word.push_back(nice_char_array[x]);
    wordlist.push_back(*(new Word(current_word)));
}

它可以编译,但是在“ wordlist.push_back ...”处,可执行文件只是挂了。 我怎么了 我想自动生成没有特殊名称的对象,就像在数组或向量中设置值一样。在真实的代码中,整个过程由一个for循环和一些if子句包围。

1 个答案:

答案 0 :(得分:0)

在c ++中,new不仅创建了一个新对象,还在堆上分配了一个新对象。

您想要做的就是通过值传递:

wordlist.push_back(Word(current_word));

或更妙的是,在向量中构造它:

wordlist.emplace_back(current_word);