假设我有一个结构,其成员是一个向量。在构造函数中,我想将其设置为NULL。但后来我希望能够将事情推回去。如何在向量为NULL之后初始化向量?
struct structName {
vector<int> vec;
structName() {
vec = NULL
}
void set(int);
}
void structName::set(int n) {
// What do I put here?
vec.push_back(n);
}
感谢您的帮助!
答案 0 :(得分:2)
它已经通过默认构造函数初始化,如果需要调用其他构造函数,请使用初始化列表。
请记住,这是C ++,而不是Java / C#/等等。 对象为空是没有意义的(好吧,它也不是那些语言,而是继续阅读)。它不可能发生。在Java和类似的语言中,你有变量是对象的引用,那些引用(不是对象!)可能是也可能不是null。
在C ++中并非如此。在引用它们的对象和指针之间有一个严格的描述(指针,或者当然,可以为null或指向无效的内存位置)。
答案 1 :(得分:0)
向量的默认构造函数将其设置为最简单的状态:无内容。所以不要管它。
答案 2 :(得分:0)
将向量初始化为NULL没有任何意义。也许你对指针感到困惑。如果要将向量初始化为空向量,则会自动进行。换句话说就像这样
struct structName {
vector<int> vec;
structName() {
}
void set(int);
}
void structName::set(int n) {
vec.push_back(n);
}
答案 3 :(得分:0)
我认为你会像在Java中一样思考C ++对象。 不要他们是完全不同的野兽。
在C ++中,对象不是Java中的引用,因此将它们归零是没有意义的。实际上,尝试vec = NULL
是一个错误,因为NULL
实际上只是0。
相反,只需删除行vec = NULL
,它就会按原样运行。该向量将默认构造为空,您不必进行任何其他初始化。