|
3 / 4 / 4
Регистрация: 22.05.2015
Сообщений: 120
|
||||||||||||||||
Непонятная ошибка13.03.2016, 10:52. Показов 3546. Ответов 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)
Непонятная ошибка, связанная с наследованием Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|