Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++以来已经有一段时间了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的行中遇到此错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我_C++_Class_Object_Vector - Fatal编程技术网

使用带有错误对象的向量 自从我做C++以来已经有一段时间了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的行中遇到此错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我

使用带有错误对象的向量 自从我做C++以来已经有一段时间了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的行中遇到此错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我,c++,class,object,vector,C++,Class,Object,Vector,编译 g++ mainFile.cpp MyClass.cpp extraObjectFile.o -o mainFile 生成: error: expected constructor, destructor, or type conversion before ‘<’ token MyClass.h class MyClass { int priority; public: MyClass(int); int getPriority(

编译

g++ mainFile.cpp MyClass.cpp extraObjectFile.o -o mainFile
生成:

error: expected constructor, destructor, or type conversion before ‘<’ token
MyClass.h

class MyClass
{
    int priority;
    public:
        MyClass(int);
        int getPriority();
};

vector
更改为
std::vector

  • 使用
    std::vector
    ,而不仅仅是
    vector

  • 运算符
    new
    返回指向
    MyClass
    的指针,而不是对象本身。您需要创建指针向量(
    vector
    ),或者需要像这样使用
    MyClass()
    构造函数

    MyClass m(100);
    所有队列。推回(m)

  • 或者仅仅是

    allQueue.push_back(mMyClass(100));
    

    好的,首先要注意的是:当您发布错误消息时,请发布编译器给您的完整错误消息。否则,可能没有人能帮助你

    第二,回答你的问题:

    使用


    添加对象。考虑为MyClass实现一个拷贝构造函数.< /p>,因为没有人解释为什么在<代码> vector < /COD>之前添加<代码> STD::/COD>,并且因为它不值得自己的答案,这是因为 vector < /COD>模板属于<代码> STD命名空间。另一种选择是使用名称空间std进行
    在您的包含之后。看右边。我从几年前编写的一个旧cpp文件中复制了一些代码,当时我正在将这个文件与我的旧文件进行比较,我一定忘了复制名称空间行。永远不会找到它…+1这消除了所有的编译器错误。使用
    vector
    vector
    是否被认为是更好的做法?@jb这取决于您要存储的内容。一个存储指针,另一个存储对象本身。在大多数情况下,您只需要存储对象。请记住,在存储指针时,从
    向量
    中删除指针时,仍然必须
    删除它们,否则会导致内存泄漏。@jb。使用MyClass还是MyClass*作为向量的容器元素完全取决于您想要实现什么。这两种方法各有利弊。然而,很多人会认为使用MyClass更安全,并且只有当你真的必须使用指针时,你应该考虑使用智能指针(如Booost:SToM:SyddY-PTR从Soost或STD::SyrdypTR,如果你已经有C++ 11支持)。
    
    class MyClass
    {
        int priority;
        public:
            MyClass(int);
            int getPriority();
    };
    
    allQueue.push_back(mMyClass(100));
    
    std::vector<MyClass> allQueue;
    
    allQueue.push_back(MyClass(100));