使用带有对象的矢量会出错

Using vectors with objects error

本文关键字:出错 对象      更新时间:2023-10-16

我已经有一段时间没有做C++了,所以我在这里遇到了一些麻烦。我在主文件中声明allQueue的那一行收到了这个错误。很明显,我已经删除了很多我认为不需要的代码,如果你还需要什么,请告诉我。

使用编译

g++ mainFile.cpp MyClass.cpp extraObjectFile.o -o mainFile

生成:

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

主文件

#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <iostream>    
#include "MyClass.h"
vector<MyClass> allQueue;
int main()
{
   allQueue.push_back(new MyClass(100));
}

MyClass.cpp

#include "MyClass.h"
MyClass::MyClass(int start_priority)
{
    priority = start_priority;
}

int MyClass::getPriority()
{
    return priority;
}

MyClass.h

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

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

第二,你的问题的答案:

使用

std::vector<MyClass> allQueue;

在您的main.cpp文件中。做

allQueue.push_back(MyClass(100));

以添加对象。还可以考虑为MyClass实现一个复制构造函数。

vector更改为std::vector

  1. 使用std::vector,而不仅仅是vector

  2. 运算符new返回指向MyClass的指针,而不是对象本身。你需要制作一个指针向量(vector<MyClass*>),或者你需要使用像这个一样的MyClass()构造函数

    MyClass m(100); allQueue.push_back(m);

或者只是

allQueue.push_back(mMyClass(100));