Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c+;中从private初始化构造函数内的向量+;类似于Java中的ArrayList_Java_C++_Class_Arraylist_Vector - Fatal编程技术网

如何在c+;中从private初始化构造函数内的向量+;类似于Java中的ArrayList

如何在c+;中从private初始化构造函数内的向量+;类似于Java中的ArrayList,java,c++,class,arraylist,vector,Java,C++,Class,Arraylist,Vector,我会尽量使这件事尽可能简单 在Java中,我将执行以下操作: public class foo{ private final int x; private final ArrayList<classname1> one; private final ArrayList<classname2> two; //constructor public foo(int x){ this.x = x; o

我会尽量使这件事尽可能简单

在Java中,我将执行以下操作:

public class foo{

    private final int x;  
    private final ArrayList<classname1> one;
    private final ArrayList<classname2> two;

    //constructor
    public foo(int x){
        this.x = x;
        one = new ArrayList<>();
        two = new ArrayList<>();
        menu();
    }
公共类foo{
私人最终int x;
私人终审庭名单;
二等兵;
//建造师
公共食物(int x){
这个.x=x;
一=新的ArrayList();
二=新的ArrayList();
菜单();
}
然后在我的代码中使用“一”和“二”

<>我现在使用C++,我在阅读C++中的ArayLead相当于向量。我已经尝试过了,但是我发现很难理解如何初始化像java代码这样的构造函数中的向量。 这就是我到目前为止在c++中所做的:

class foo{

private: int x;
private: vector<classname1> one;
private: vector<classname2> two;

public: 

//constructor
foo(int x) {
 this->x= x;
 //how would I initialize the vectors here like in java? Something like but of course it doesn't work:
        one = new Vector<>();
        two = new Vector<>();
 menu();
}
class-foo{
私人:int x;
私人:向量1;
私人:向量2;
公众:
//建造师
foo(int x){
这个->x=x;
//我应该如何像在java中那样初始化向量?类似于,但它当然不起作用:
一=新向量();
二=新向量();
菜单();
}

谢谢!感谢您的帮助。

没有什么需要初始化的。
std::vector
有自己的默认构造函数。除非您需要使用一些初始内容显式初始化
std::vector
,否则无需执行任何操作

<> P>你必须做java必须做的事情是因为java中的所有对象都不是对象,它们实际上是指向对象的指针。因此,java构造函数必须使用<代码>新< /Cord>关键字来细致地初始化每个对象。C++中不适用。

C++对象的工作原理是不同的。如果你在学习C++时完全忘记了你所知道的关于对象的所有知识,你会帮你很大的忙。这将是很困难的,因为C++的语法在这方面非常类似于java,但是C++对象的工作原理与爪哇不同。进行类比你只会感到困惑,一次又一次地走上错误的道路

<>学习和理解C++对象的正确方法是读一本好的C++书籍,而不是思考java。 C++中的“私有”关键字与java中的“私有”关键字不一样。C++代码中的三个“私有”实例只需要第一个实例,而其他两个实例则完全没有实现。
C++不是Java。

这取决于您想将其初始化为什么,您应该对此进行澄清。但是,如果您想要默认的初始化向量,不做任何事情都可以。只需
foo(int val):x(val){menu();}
one
two
foo
对象位于相同的分配空间。如果要使它们独立于
foo
类,应使用
unique\ptr one
或另一个智能指针声明。