это мой первый вопрос на этом веб-сайте, но я постараюсь охватить все, что необходимо. Извиняюсь, если я что-то забыл. Я столкнулся с проблемой с помощью QT Creator, но я полагаю, что это будет то же самое с использованием Visual Studio или просто C++ вообще.Добавление объекта в вектор
У меня есть несколько классов: Mainwindow, Track и AddForm. Mainwindow - это то, что он называется. Основная форма. Трек - это пользовательский класс, основанный на QObject, который содержит только одну переменную QString (только сейчас, так как я все еще экспериментирую с QT). А AddForm - это класс для другой формы, которую можно создать, нажав кнопку в моей форме MainWindow. Эта форма содержит только однострочное редактирование для заполнения строки и кнопки с надписью «Добавить». Всякий раз, когда эта кнопка нажата, текст из редактирования строки будет помещен в переменную QString из класса Track. Эта переменная QString называется «художник».
Помимо назначения текста из строки-редактирования переменной «artist» для объекта Track, форма также будет выдавать сигнал, который отправляет этот весь объект. Слот в моем главном окне будет реагировать на этот сигнал и собирать Трек-объект. Все идет нормально.
Вот мой вопрос. В моем заголовке mainwindow я создал приватный QVector с именем trackVector, который затем могу вызвать в моем mainwindow.cpp. То, что я хочу сделать, это append/push_back QVector с этим объектом Track. Вроде как это:
trackVector.push_back(trackObject);
Я получаю следующее сообщение об ошибке при создании приложения: click here for a screenshot
Теперь конечно с целым числом или любой другой переменной, это очень просто. Вы бы просто сделать что-то вроде этого, я полагаю:
QVector<int> myVector;
myVector.push_back(3);
Я думаю, что всякий раз, когда вы добавляете в QVector (или стандартный без интервала QT вектор), вы должны сделать это с помощью конструктора этого класса. Но как я могу создать конструктор, в который вы можете просто поместить уже существующий объект?
Пожалуйста, объясните как можно более простые слова, так как я не являюсь носителем английского языка :) Большое спасибо!
Ошибка говорит о том, что вы пытаетесь нажимать * указатель * на объект 'Track', когда вектор является вектором объектов' Track' * * (не указателей). –
спасибо! Поэтому вы думаете, что он будет работать, когда это не указатель. Вы знаете, как сделать это не указателем, так сказать? – MartijnKor
Либо не передайте указатель на функцию 'trackAdded', либо разыщите указатель. –