Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86

ref class и vector

11.12.2021, 15:11. Показов 2330. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string.h>
#include <vector>
 
ref class Book {
private:
    double cost;
    System::String^ autor;
    System::String^ name;
    System::String^ janr;
 
public:
    Book(double st, System::String^ au, System::String^ na, System::String^ ja) {
        cost = st;
        autor = au;
        name = na;
        janr = ja;
    
    }
    ~Book() {
    }
 
    double getC() {
        return cost;
    }
};
 
int main() {
    std::vector <Book> libra;
    Book element(12.5, "dsfsd", "rsdf", "ewfsd");
    libra.push_back(element);
}
Выдаёт ошибку
error C3265: нельзя объявлять управляемый "_Myend" в неуправляемом "std::_Vector_val<std::_Simple_types<_Ty >>"

Объект такого класса вообще вообще возможно засунуть в вектор или по другому придётся функции реализовывать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2021, 15:11
Ответы с готовыми решениями:

В чем отличие ref class от value class, где какой следует использовать?
САБЖ, мало по мало изучаю C++/CLI.. В голове каша, хотелось бы как то фундаментально осмыслить и запомнить в каких случаях нужно...

Наследование ref class -ов
Напишите пожалуйста какой-то пример с наследование public ref классов.В инете нашёл наследование обычных классов, перед ними дописую...

Конструктор с несколькими параметрами в ref class
Простите, что не пишу в C++/CLI, просто там никого нет онлайн, и ждать ответа пришлось бы на порядки дольше. С неявными преобразованиями...

13
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
11.12.2021, 15:17
Лучший ответ Сообщение было отмечено YaTagan как решение

Решение

YaTagan, используйте System::Collections::Generic::List<T> вместо std::vector
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 16:11  [ТС]
А как его подключить к проекту? А то Яндекс только для шарпов варианты кидает
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
11.12.2021, 16:38
YaTagan, как-то так
C++
1
2
3
4
5
int main() {
    System::Collections::Generic::List<Book>^ libra = gcnew System::Collections::Generic::List<Book>();
    Book element(12.5, "dsfsd", "rsdf", "ewfsd");
    libra->Add(element);
}
Чтобы не писать полные имена не помешает добавить в начало файла
C++
1
using namespace System::Collections::Generic;
C++
1
2
3
4
5
int main() {
    List<Book>^ libra = gcnew List<Book>();
    Book element(12.5, "dsfsd", "rsdf", "ewfsd");
    libra->Add(element);
}
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 16:44  [ТС]
Странно, он всё-равно не считает класс Book допустимым элементом
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
11.12.2021, 16:45
YaTagan, попробуйте создать его экземпляр тоже через gcnew.
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 16:54  [ТС]
Он создать List не может, считает, что Book хранится в нём не может
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
11.12.2021, 16:57
YaTagan, значит так надо
C++
1
List<Book^> libra = gcnew List<Book>();
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 17:05  [ТС]
Не работает
Ни так
C++
1
List<Book^> libra = gcnew List<Book>();
Ни так
C++
1
List<Book^> libra = gcnew List<Book^>();
Ни так
C++
1
List<Book^> libra = new List<Book^>();
Так на саму строку не ругается, но Add не работает
C++
1
List<Book^> ^libra = gcnew List<Book^>();
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
11.12.2021, 17:42
Цитата Сообщение от YaTagan Посмотреть сообщение
Так на саму строку не ругается, но Add не работает
C++
1
List<Book^> ^libra = gcnew List<Book^>();
В смысле "не работает"?
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 17:44  [ТС]
Ошибка (активно) E1767 невозможно вызвать функцию "System::Collections::Generic::List<T>:: Add [с T=Book ^]" с данным списком аргументов
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
11.12.2021, 17:54
Лучший ответ Сообщение было отмечено YaTagan как решение

Решение

C++
1
2
3
    List<Book^>^ libra = gcnew List<Book^>();
    Book^ element = gcnew Book(12.5, "dsfsd", "rsdf", "ewfsd");
    libra->Add(element);
?
1
 Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86
11.12.2021, 19:37  [ТС]
А можно ещё один вопрос? Как обратиться к конкретному элементу List?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
12.12.2021, 02:37
YaTagan, также как к элементу массива - по индексу
C++
1
libra[0]->smth
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2021, 02:37
Помогаю со студенческими работами здесь

Что значит public ref class
Помогите разобраться, что значит public ref class!!! ref, как я понял, означает, что класс будет ссылочный. А что обозначают модификаторы...

Замена friend-операторов для ref class
Если в ref-классе написать friend operator+(double _Left, MyClass ^_Right), высвечивается ошибка компиляции. Кто знает работающую...

static ref class, глобальный статичный класс
Добрый день, столкнулся с проблемой создания глобального гласа, который уже был бы реализован при запуске программы т.е. он уже был...

Конструктор неявного преобразования из double и System::String ^ в ref class
Кто знает, как это реализовать, чтобы, например, был возможен код: public ref class MyClass { double number; System::String...

Java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
Здравствуйте. При динамической загрузке кода столкнулся с такой ошибкой: E/AndroidRuntime(27808): Caused by:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru