Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
#1

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

22.03.2011, 02:44. Просмотров 2411. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста.
Для определения массива объектов раньше пользовался
Код
MyClass * MyObject
, а потом уже задавал его длину. Но после переноса кода класса в отдельный файл, такая фишка перестала работать, выдает ошибку "error C3699: *: это косвенное обращение невозможно использовать для типа MyClass", как можно это исправить?
Заранее благодарю.

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

Определение длины заранее неопределенной строки - C++
Добрый день. Возник вопрос с определением длины строки. Если она заранее определена, то используя функцию strlen() я легко получаю нужное...

Массив объектов класса. Печать строк-членов класса. - C++
подскажите, как распечатать строки? #include "myString.h" #include <iostream> #define stop __asm nop void main() { ...

Массив объектов класса как член другого класса - C++
Здравствуйте. У меня тут возникла проблемка #include "main.h" class player { public: player(); player(char*); ...

Написать класс Матрица. Массив объектов класса Массив - C++
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив из предыдущего задания). В классе реализовать следующие...

Массив объектов класса - C++
Имеется класс : #include <iostream> class Pat { private : int patAge; char patName; public...

Массив объектов класса - C++
class abc { public: int x,y; }; abc all; int main() { all.x=5; all.x=6;

9
ForEveR
В астрале
Эксперт С++
7988 / 4747 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.03.2011, 02:46 #2
Юзайте вектор и не парьте себе мозг. Но по сути так как у вас должно работать, если действительно не забыли подключить файл, где описан класс.
0
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;
}
Где я могу косячить?
Заранее премного благодарен.
0
ForEveR
В астрале
Эксперт С++
7988 / 4747 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
23.03.2011, 00:29 #4
physman, Какую ошибку конкретнее? Пример ошибки связанной с самим вектором тоже неплохо бы
0
Alex1234
13 / 13 / 0
Регистрация: 11.02.2011
Сообщений: 55
23.03.2011, 10:51 #5
Может имеется ввиду это: extern MyClass * MyObject
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.03.2011, 11:22 #6
Использование плоского указателя в управляемом коде?
Вместо * напиши ^.
0
physman
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 8
23.03.2011, 21:32  [ТС] #7
Deviaphan,
Спасибо, помогло...

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

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

теперь стало понятно че он там ругался=) я бы тоже заругался)
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 05:57 #10
Никак не пойму, зачем нужен managed C++... Уж лучше сразу на шарпе...
0
24.03.2011, 05:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 05:57
Привет! Вот еще темы с ответами:

Массив объектов класса - C++
Добрый день. При попытки создать массив объектов класса ошибка. Как в дальнейшем динамически изменять размер массива (добавлять-удалять...

Массив объектов класса - C++
Всем привет! Я не так давно познакомился с классами в C++, прочитав несколько статей по этой теме решил попрактиковаться. Есть задача:...

Массив объектов класса - C++
Товарищи, доброго времени суток! Помогите, пож-та, найти ошибку в коде, всё перепроверил, не понимаю всё равно. Суть проги такая - 5...

Массив объектов класса - C++
Здравствуйте, не могу разобраться как записать в массив объекты класса ObjectX. Подскажите пожалуйста. class ObjectX{ public: int...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru