我的代码如下:
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子句包围。
答案 0 :(得分:0)
在c ++中,new
不仅创建了一个新对象,还在堆上分配了一个新对象。
您想要做的就是通过值传递:
wordlist.push_back(Word(current_word));
或更妙的是,在向量中构造它:
wordlist.emplace_back(current_word);