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

ref class и vector

11.12.2021, 15:11. Показов 2301. Ответов 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
18250 / 14175 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru