使用带有对象错误的向量

时间:2012-02-21 20:59:45

标签: c++ class object vector

自从我完成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();
};

3 个答案:

答案 0 :(得分:6)

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

其次,你的问题的答案:

使用

std::vector<MyClass> allQueue;
你的main.cpp文件中的

。做一个

allQueue.push_back(MyClass(100));

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

答案 1 :(得分:1)

vector更改为std::vector

答案 2 :(得分:1)

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

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

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

  3. 或者只是那个

    allQueue.push_back(mMyClass(100));