Использование векторов с ошибками объектов - PullRequest
0 голосов
/ 22 февраля 2012

Прошло немного времени с тех пор, как я сделал 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 ]

6 голосов
/ 22 февраля 2012

Хорошо, первое, что нужно отметить: Когда вы публикуете сообщение об ошибке, пожалуйста, отправьте сообщение об ошибке full , которое дал вам ваш компилятор. Иначе никто не сможет тебе помочь.

Во-вторых, ответ на ваш вопрос:

Используйте

std::vector<MyClass> allQueue;

в вашем файле main.cpp. И сделать

allQueue.push_back(MyClass(100));

для добавления объектов. Также рассмотрите возможность реализации конструктора копирования для MyClass.

1 голос
/ 22 февраля 2012
  1. Используйте std::vector, а не просто vector.

  2. Оператор new возвращает указатель на MyClass, а не сам объект.Вам нужно создать вектор указателей (vector<MyClass*>) или использовать конструктор MyClass(), подобный этому

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

или просто этот

allQueue.push_back(mMyClass(100));
1 голос
/ 22 февраля 2012

Изменить vector на std::vector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...