Форум программистов, компьютерный форум CyberForum.ru

Массив объектов класса неопределенной длины - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
22.03.2011, 02:44     Массив объектов класса неопределенной длины #1
Здравствуйте!
Помогите пожалуйста.
Для определения массива объектов раньше пользовался
Код
MyClass * MyObject
, а потом уже задавал его длину. Но после переноса кода класса в отдельный файл, такая фишка перестала работать, выдает ошибку "error C3699: *: это косвенное обращение невозможно использовать для типа MyClass", как можно это исправить?
Заранее благодарю.

ПС. Включить файл класса не забыл.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 02:44     Массив объектов класса неопределенной длины
Посмотрите здесь:

Массив объектов класса. Печать строк-членов класса. C++
C++ Массив объектов класса Word
Массив объектов класса C++
Массив объектов класса C++
C++ Определение длины заранее неопределенной строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.03.2011, 02:46     Массив объектов класса неопределенной длины #2
Юзайте вектор и не парьте себе мозг. Но по сути так как у вас должно работать, если действительно не забыли подключить файл, где описан класс.
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
22.03.2011, 22:08  [ТС]     Массив объектов класса неопределенной длины #3
Спасибо за совет и оперативность=)
перейду к векторам...

Добавлено через 19 часов 16 минут
К сожалению, для векторов выдает ту же ошибку... А потом еще кучу дополнительных, ссылающихся на файл vector...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//App1.cpp
 
#include "Form1.h"
#include "ray.h"
#include <vector>
 
using namespace App1;
using namespace std;
 
 
int main(array<System::String ^> ^args)
{
 
    Application::Run(gcnew Form1());
    vector <ray> Rays;
    return 0;
}
Где я могу косячить?
Заранее премного благодарен.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.03.2011, 00:29     Массив объектов класса неопределенной длины #4
physman, Какую ошибку конкретнее? Пример ошибки связанной с самим вектором тоже неплохо бы
Alex1234
 Аватар для Alex1234
12 / 12 / 0
Регистрация: 11.02.2011
Сообщений: 55
23.03.2011, 10:51     Массив объектов класса неопределенной длины #5
Может имеется ввиду это: extern MyClass * MyObject
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.03.2011, 11:22     Массив объектов класса неопределенной длины #6
Использование плоского указателя в управляемом коде?
Вместо * напиши ^.
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
23.03.2011, 21:32  [ТС]     Массив объектов класса неопределенной длины #7
Deviaphan,
Спасибо, помогло...

Не могли бы Вы пояснить в чем отличие ^ от *, ну либо скинуть ссылку на это дело?
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
23.03.2011, 23:04     Массив объектов класса неопределенной длины #8
Звездочка - неуправляемый указатель, то есть те сущности, которые создаются через такие указатели, создаются на неуправляемой куче ,то есть никак не отслеживаются сборщиком мусора, а значит освобождение ресурсов из под этих объектов придется проводить вручную, сборщик мусора ничего с ними сделать не может и не станет из принципа.
^ - управляемая ссылка(впрочем, можно сказать, что и указатель) - с помощью него создаются объекты на управляемой куче, а значит сборщик мусора будет отслеживать такие ссылки и сможет предпринимать в отношении их различные действия, будь то перемещение объектов, освобождение и кучу еще всякого интересного.
В связи с этим, при сообщении управляемого и неуправляемого кода нужно быть очень осторожным при переходе от ^ к * или наоборот, так как стоит помнить, что в любой(гипотетически) момент если есть объект на управляемой куче с привязанной ^ ссылкой, сборщик мусора может что-то сделать с памятью, куда ссылается такая управляемая ссылка и если мы просто ^ ссылку присвоили * указателю, то в любой момент * указатель может стать невалидным и приходится блокировать работу сборщика мусора для данной ссылки через pin_ptr и использовать другие ухищрения.

Добавлено через 1 минуту
И плюс к тому, C++/CLI не всегда поддерживает прямые преобразования между такими указателями, так что случайно перепутать сложно.
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
23.03.2011, 23:46  [ТС]     Массив объектов класса неопределенной длины #9
Ma3a,
спасибо большое!

теперь стало понятно че он там ругался=) я бы тоже заругался)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 05:57     Массив объектов класса неопределенной длины
Еще ссылки по теме:

Массив объектов класса как член другого класса C++
Массив объектов класса C++
Массив объектов класса C++

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 05:57     Массив объектов класса неопределенной длины #10
Никак не пойму, зачем нужен managed C++... Уж лучше сразу на шарпе...
Yandex
Объявления
24.03.2011, 05:57     Массив объектов класса неопределенной длины
Ответ Создать тему
Опции темы

Текущее время: 04:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru