Size: a a a

2021 March 19

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Я херово объясняю что хочу.
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Matrix Telegram Bridge
Princess Luna: Смотри есть класс поля в моей игре. Сейчас Секция (составная часть в ектора поля (std::vector <std::vector<Section>>) хранит информацию о типе и номере элемента в другом векторе. Я хотел бы от этого избавиться. Решил сделать вектор поля через родительский класс для трех векторов, так не придется обновлять номера на элементы.
Для хранения абстрактных классов нужны либо Смарт пойнтеры либо обычные пойнтеры
источник

R

Roman in C++ Together 2.0
Я это создаю в текстовом редакторе?
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Т.е вектор Шаред птр
источник

m

mefest in C++ Together 2.0
Roman
@AlexFails  сможешь сейчас протестить ?
а что тестить?
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
Для хранения абстрактных классов нужны либо Смарт пойнтеры либо обычные пойнтеры
Princess Luna: Можно уточнить? Пойнтер это указатель?
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Roman
Я это создаю в текстовом редакторе?
Princess Luna: Да.
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Matrix Telegram Bridge
Princess Luna: Можно уточнить? Пойнтер это указатель?
Да
источник

R

Roman in C++ Together 2.0
mefest
а что тестить?
СОздаетсся ли папка и файл успешно, тема
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna:
Тогда все верно, сейчас в файле main.cpp нужный мне вектор (одномерный) определяется как указатель на абстрактный класс.

#include <iostream>
#include <vector>
#include "Section.h"

void print(const std::vector<ISection *> &test);

int main() {
   std::vector<ISection *> test;
   test.push_back(new FoodSection);
   test.push_back(new CellSection);
   test.push_back(new FoodSection);
   std::cout << test[0]->getItem("") << std::endl;

   print(test);
   std::cout << std::endl;
   std::cout << "Change third element to EmptySection" << std::endl;
   test[2] = new EmptySection;
   print(test);
}

void print(const std::vector<ISection *> &test) {
   for (int i = 0; i < 3; i++) {
       switch (test[i]->getType()) {
           case food: {
               std::cout << "[f]";
               break;
           }
           case cell: {
               std::cout << "[c]";
               break;
           }
           case empty:
               std::cout<< "[ ]";
               break;
       }
   }
}
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Все верно работает. Меня смущает необхоидимость переопределять методы getItem (string и int) обязательно в потомках.
источник

m

mefest in C++ Together 2.0
Matrix Telegram Bridge
Princess Luna: Все верно работает. Меня смущает необхоидимость переопределять методы getItem (string и int) обязательно в потомках.
если разная реализация то да, а так можно вынести в абстрактный класс и норм
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Может их можно пометить, как необязательные к переопределению?
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Matrix Telegram Bridge
Princess Luna:
Тогда все верно, сейчас в файле main.cpp нужный мне вектор (одномерный) определяется как указатель на абстрактный класс.

#include <iostream>
#include <vector>
#include "Section.h"

void print(const std::vector<ISection *> &test);

int main() {
   std::vector<ISection *> test;
   test.push_back(new FoodSection);
   test.push_back(new CellSection);
   test.push_back(new FoodSection);
   std::cout << test[0]->getItem("") << std::endl;

   print(test);
   std::cout << std::endl;
   std::cout << "Change third element to EmptySection" << std::endl;
   test[2] = new EmptySection;
   print(test);
}

void print(const std::vector<ISection *> &test) {
   for (int i = 0; i < 3; i++) {
       switch (test[i]->getType()) {
           case food: {
               std::cout << "[f]";
               break;
           }
           case cell: {
               std::cout << "[c]";
               break;
           }
           case empty:
               std::cout<< "[ ]";
               break;
       }
   }
}
Delete блять где
источник

m

mefest in C++ Together 2.0
Roman
СОздаетсся ли папка и файл успешно, тема
источник

m

mefest in C++ Together 2.0
источник

m

mefest in C++ Together 2.0
но заметок нету!
источник

R

Roman in C++ Together 2.0
а ты создавал их?
источник

R

Roman in C++ Together 2.0
и нормально выходил, а не крестик жал
источник

m

mefest in C++ Together 2.0
Roman
а ты создавал их?
да
источник