Аватар для YaTagan
4 / 3 / 2
Регистрация: 25.11.2018
Сообщений: 86

ref class и vector

11.12.2021, 15:11. Показов 2305. Ответов 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,892
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Ритм жизни
kumehtar 28.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 28.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru