Ссылка на вектор теряется по пути

175
29 июля 2021, 02:50

У меня есть .h файл в котором описан всего один класс Worker:

#pragma once
#include <iostream>
#include <vector>
    class Worker {
    private:
        std::vector<int> num_mas;
    public:
        void pushElem(int n) {
            num_mas.push_back(n);
        }
        void printElem() {
            for (int i = 0; i < num_mas.size(); i++) {
                std::cout << num_mas[i] << std::endl;
            }
        }
        std::vector<int> getMas() {
            return num_mas;
        }
Worker() {
    num_mas.reserve(5);
    std::cout << "Конструктор по умолчанию";
}
};

И две формы MyForm и DataForm. Чтобы не засорять сообщение скину только участки кода по которым есть вопросы.

Изначально в функции main запускается форма MyForm. В .h файле формы описана переменная типа Worker

Worker w1;

В конструкторе MyForm я заношу в поле num_mas несколько элементов:

w1.pushElem(10);
w1.pushElem(15);
w1.pushElem(5);

Дальше при нажатии кнопки выполняется следующий код:

private: System::Void Button13_Click(System::Object^ sender, System::EventArgs^ e) {
    FormData^ f = gcnew FormData(w1.getMas());
    f->Show();
}

То есть я хочу передать копию вектора из этого объекта, чтобы конструктор формы FormData ее обработал ну и сделал с ней свои дела

Код я там почти не трогал, только добавил текстовое поле. В классе формы находится два конструктора:

 FormData(std::vector<int> numbers) {
    richTextBox1->AppendText("Hello");
 }
 FormData(void)
 {
    InitializeComponent();
    richTextBox1->AppendText("Hello");
 }

Программа нормально компилируется, но когда нажимаю кнопку вылетает ошибка:

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

Если вызывать обычный конструктор то программа работает нормально

Еще хочу добавить, что объект я создал правильно. (То есть вряд ли дело в этом). На месте вызова конструктора, был код который печатал содержимое поля num_mas:

w1.printElem();

Answer 1

В перегруженном конструкторе надо было добавить

InitializeComponent();
READ ALSO
Замена слово/значение в текстовом файле

Замена слово/значение в текстовом файле

Cтолкнулся с такой проблемой,мне необходимо изменить значение в строке(которую находит с помощью ключа)Проблема в том, что мне неизвестно...

286
вывод промежуточных данных в строку таблицы c#

вывод промежуточных данных в строку таблицы c#

Есть веб-форма, на которой существует несколько выпадающих списков и некая таблица с заполненными даннымиполе Pocket_num соответствует выбору...

172