假设我有一个名为 Foo 的课程。Foo 没有默认构造函数。它有一个构造函数 Foo(int x, float y)。
Bar 是一个容器类。它包含一个包含 Foo 实例的向量。
Bar::Bar(int numberOfFoos, int x, float y) {
foovector.resize (numberOfFoos);
for(int i = 0; i < numberOfFoos; i++) {
**read below**
}
此时,我想调用 Foo 的构造函数并将参数 int x 和 float y 传递给它。Foo 的构造函数根据 x 和 y 的值做不同的事情。
假设 Foo 有一个默认构造函数,resize 向量函数到底是做什么的?它是否只是在不调用默认构造函数的情况下调整向量的大小?换句话说,是否为 Foo 类型的 n 个元素保留了空间,但它们没有被初始化为任何东西?
如果它没有一个怎么办,就像在这种情况下?
在 for 循环中,我想以这种方式初始化每个 Foo 元素:
foovector[i].Foo(int x, float y);
但我不能以这种方式使用点访问运算符调用构造函数。此时我什至不知道构造函数是否已经被 resize 函数调用。
问题是,我该怎么做?
关于类向量的另一个相关问题:
在 Foo 中有一个包含浮点数的向量。float x 参数是它应该保持的浮点数。Foo 的构造函数有一行
arrayofFloats.resize (x);
但这意味着计算机事先并不知道 Foo 的大小。每个 foo 可以有不同的大小。它不会对 Foo 的向量造成问题吗?如果每个 Foo 可以有不同的大小,如何声明特定大小的向量?
抱歉英语不好,我希望它已经足够清楚了。
谢谢你。