C++ 课堂上的向量

C++ 课堂上的向量,c++,class,C++,Class,我想创建一个包含三个不同向量的类,其大小将由构造函数给出。因此,我定义了以下类: #include "World.h" #include <vector> class Field { public: Field(World &world): world(world){ this->_Nx = world.getNx(); phi.reserve(_Nx); };

我想创建一个包含三个不同向量的类,其大小将由构造函数给出。因此,我定义了以下类:

#include "World.h"
#include <vector>

class Field
{
    public:
        Field(World &world): world(world){
            this->_Nx = world.getNx();
            phi.reserve(_Nx);
        };
        
        dvector phi;
        
        int getNx() const{return int(_Nx);};
        
    protected:
        World &world;
        int _Nx;        
};
因此,
field.phi
是一个大小为
\u Nx
向量
对象,其中
\u Nx
由构造函数给出。如果是这样的话,我可以使用
field.phi[index]=which
,然后继续编写代码。然而,这并不像预期的那样有效。如果我在
main()
中写入:


std::难道你可以把这段代码进一步简化为一段代码吗。此外,请查看cppreference.com上的
reserve()
文档。一起,我相信你会发现问题的!课堂上的部分是红鲱鱼。最小的例子是
std::vector v;v、 储备(10);我能想出办法吗!我应该使用
phi.resize(Nx)而不是
phi.reserve(\u Nx)
。谢谢你的回复!实际上,我建议使用适当的构造函数来实现这个效果;将其放入初始值设定项列表phi(world.getNx())
只是一句话:不要为自己的类成员变量使用类似于
\u Nx
的名称,因为这是编译器/标准库实现内部使用的名称。
int main(){
        /*CODE*/
        Field field(world);     
};
std::cout << "Size of phi is " << (field.phi).size() << std::endl;