|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
||||||||||||||||
Непонятная ошибка13.03.2016, 10:52. Показов 3582. Ответов 9
Метки нет (Все метки)
Добрый день форумчане.
Пытаюсь скомпилить следующее:
Если я из шарпов выкину
Такой же код спокойно компилится на плюсах
0
|
||||||||||||||||
| 13.03.2016, 10:52 | |
|
Ответы с готовыми решениями:
9
Непонятная ошибка
Непонятная ошибка |
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||||||
| 13.03.2016, 12:07 | ||||||
|
1. Это не ошибка, а особенность
2. Сравнивать C# и C++ в вопросах организации памяти бессмысленно (а данный пример и для C++ не показателен) 3. Упрощу код:
Без использования специальных директив для менеджера памяти, которые, например, запретят ей неконтролируемо перемещаться в памяти, невозможно взять указатель на управляемый тип, а следовательно и на структуру, содержащую экземпляр этого типа. Вот, собственно, и всё... Вот тема, в которой описаны некоторые особенности работы с неуправляемым кодом: https://www.cyberforum.ru/csha... 42135.html Добавлено через 7 минут Мой совет - либо переписать с использованием IntPtr, либо вообще забыть про указатели, небезопасный код и хитрые структуры и написать всё по правилам хорошего тона C#
1
|
||||||
|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
|
| 13.03.2016, 13:56 [ТС] | |
|
Спасибо.
Сам я пишу на с и с++ embed, понадобилось на компе написать. Писать на шарпах стал только из за удобства winforms, поэтому хорошего тона в с# и сам не жду. А сделать я хочу простой связный список. Ссылку на класс этого типа и на такую структуру(то есть ссылка на следующий элемент). Я могу это все на ++ написать, но там не удобно строить менюшку. Не понял как это написать через Int*. ps. Как-то сталкивался с Marshall Allocate- как я понял это просто резервирование памяти определенного объема без указания каких либо типов и прочей информации. то есть просто нужно 200 байт - дадут 200 байт, а там делай с ней что хочешь...
0
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 13.03.2016, 14:07 | |
|
beam, а чем вас не устраивает для списка стандартные классы List и LinkedList? Или, если они вам не нравятся, то что мешает просто сделать класс c соответствующими двумя полями, без всякого unsafe кода? Вы, похоже, не в курсе про значимые и ссылочные типы в C#. Классы-это ссылочный тип, структуры-значимый.
Соответственно, если вы объявите поле типа какого-либо класса, то там и так будет лежать ссылка, без всяких указателей. Поэтому вам, скорее всего, не структура нужна, а класс. А указатели на шарпе используют разве что ради каких-то хитрых оптимизаций, да и то очень редко. То, что вы пишите-лютое извращение.
1
|
|
|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
|
| 13.03.2016, 14:55 [ТС] | |
|
EvilFromHell, про значимые и ссылочные типы я в курсе и понимаю в чем между ними разница, но на винду я почти никогда не писал, поэтому даже простого понимания как это должно выглядеть у меня нет. Посмотрел List - да, понравилась идея, но тут возникает проблема - я могу создать List типов класса, но мне еще нужно хранить ссылку на неопределенный тип - это будет выделенная память под обычные переменные float,byte,uint... При запуске программа не будет знать сколько у нее будет переменных. Это количество и типы она будет брать из базы. А в List мне соответственно нужно будет положить ссылки на эти переменные, которые я динамически создам. Я хотел написать List<void*>, но он не дал. Это наверно коряво выглядит на C#, но с ним просто писать формы. Если совсем туго станет уйду обратно на ++. Там по крайней мере у меня не возникает вопросов с синтаксисом ну и стандартные классы мне не понадобятся)
0
|
|
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
|||
| 13.03.2016, 15:08 | |||
Сообщение было отмечено beam как решение
РешениеА так, всецело поддерживаю тов. EvilFromHell. Не используйте структуры, только классы, передача всегда будет по ссылке. BCL (base class library) содержит тысячи готовых инструментов таких, как LinkedList<T>, и используя их можно существенно упростить себе жизнь...
1
|
|||
|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
|
| 13.03.2016, 15:13 [ТС] | |
|
понял, спасибо, думаю без проблем заменю структуры на классы
0
|
|
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||||||
| 13.03.2016, 15:19 | ||||||
|
В общем, лучше узнавайте КАК решить задачу на C#, а дальше по аналогии. Вот, например, зачем Вам связный список?
0
|
||||||
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||
| 13.03.2016, 15:23 | ||
|
0
|
||
|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
|||||||||||
| 13.03.2016, 23:47 [ТС] | |||||||||||
|
База - просто файл по определенному формату. Ничего изысканного - я эмбедщик)
Object супер! То есть это ссылка на объект неопределенного типа, то есть по сути адекватная замена void*. Связный список нужен, потому что будет много (очень много) объектов, мгновенный доступ к которым особо не нужен, а обрабатывать нужно все. Собственно не известно сколько будет таких объектов. Их количество и их параметры будут браться из базы. В общем мне вкатила идея с object и я еще посмотрю - может просто перепишу структуры в классы. P.S. Шилдта я читаю пока что на 266 стр. Так что до object и прочих не дошел... А писать уже хочется) Добавлено через 5 часов 47 минут Переделал структуры в классы и начал использовать List. Конструкция понравилась. Но возник вопрос:
Я смогу в листе хранить ссылки на разные классы? Добавлено через 11 минут Разобрался - сначала сделал
0
|
|||||||||||
| 13.03.2016, 23:47 | |
|
Помогаю со студенческими работами здесь
10
Непонятная ошибка с референсами Непонятная ошибка CLR20r3 (FormatException)
Непонятная ошибка, связанная с наследованием Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|