Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы в классах 
:(
    Опции темы
Nuzur
Дата 29.3.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Всем спасибо.
Это реальный порект, а не лаба, я б так не парился.
Я решил эту проблему, но к сожелению он не может быть прИмЕнен в других проектах, покрайней мере как догма.
Решил эту порблему через sizeof.

И вообще я так понял надо на 7-й студио переходить.
Короче всем спасибо, сорри коль чем кого обидел.


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 29.3.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



он привел рисунок с ошибкой только на:
Код

public:    
    static const int size = 200;    
    int array[size];


а на
Код

    static const int size = 200;    


ничего не сказал...

но если так не катит, можно так:
Код
class foo
{
public:
    foo();
    const int size;
    int* array;
};
foo::foo()
 : size(200)
{
    array = new int(size);
}



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Олег М
Дата 29.3.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата(Nuzur @ 28.3.2005, 22:07)
static const int size = 10;

он уже ругаеться

: error C2258: illegal pure syntax, must be '= 0'
: error C2252: 'size' : pure specifier can only be specified for functions

А имя переменной не пробовал поменять? а то size как-то мутновато, например
Код

static const int _size = 10;

PM MAIL ICQ   Вверх
Nuzur
Дата 29.3.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



smile

Пробывал. Только это ничего не дало. Просто 6-й с-шник(хоть я его и люблю) видать кривой малеха. У каждого всои недостатки, тут ничего не попишеш.


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 29.3.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Nuzur, а мой вариант чем не подходит?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
BreakPointMAN
Дата 29.3.2005, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Ребята, ну что вы паритесь?

C++ позволяет объявлять константы как члены класса, но инициализируются они с помощью конструктора - один единственный раз - и не могут изменяться в дальнейшем...

Если какой-нибудь компилятор это и проглатывает, это, тем не менее, отступление от стандарта.

Но, впрочем, можно пойти на такую хитрость:

Код

   class foo{
      enum{size=5};
      int array[size];
   };




...и это в случае, если массив должен быть фиксированной размерности... ну а если размерность меняется, не остается ничего иного, кроме как выделять память динамически, работать с указателями и не забывать подчищать за собой... %))
... ммм... а вообще, если членом класса надо сделать массив, то я бы рекомендовал использовать возможности STL, к примеру...

Это сообщение отредактировал(а) BreakPointMAN - 29.3.2005, 22:58


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
_hunter
Дата 29.3.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



BreakPointMAN, найди существенные отличия между своим вариантом и вариантом Fire-Plug' a....


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Goryachev
Дата 30.3.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 23.2.2005
Где: Израиль

Репутация: нет
Всего: нет



_hunter
Найди отличия между твоим вариантом, и моим на 2 странице.

PM MAIL   Вверх
_hunter
Дата 30.3.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



опа... согласен.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Hroft
Дата 31.3.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



Цитата(Fire @ 29.3.2005, 18:12)
#define mySIZE= 20

Клево.

А вообще, решение с enum очень прикольное, лично я о них всегда забываю smile.

Цитата(_hunter @ 29.3.2005, 19:15)
foo:foo()

Тогда уж еще проще в аргумент конструктора размер впихнуть... и получить обрезанный vector smile.

Короче говоря, непонятно, что не нравится уважаемому автору топика... Любое решение, даже с дефайном, подходит. При чем тут sizeof, мне вообще непонятно smile.
PM MAIL ICQ   Вверх
np9mi7
  Дата 31.3.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



использую STL и vector<> в качестве свойства объекта и все проблемы решены...
и с ресурсами коректно и динамически все можно

Это сообщение отредактировал(а) np9mi7 - 31.3.2005, 12:34


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Fire-Plug
Дата 1.4.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2005

Репутация: -1
Всего: 0



Цитата(Hroft @ 31.3.2005, 11:42)
Цитата (Fire-Plug @ 29.3.2005, 18:12)
#define mySIZE= 20


Клево.

Who cares (т.е. кого греет)!!!
#define - это архаизм и доводы в пользу данной характеристики давно стали обшшым местом.

Лично я использую #define крайне редко в случаях, когда не хватает воображения чтобы соорудить inline-ф-цию, напр.:
Код

#define SetTransition(stInit, Command, stTrns) TransitionMap.insert(make_pair(TPairSt2Cmd(stInit, Command),stTrns))
// где TransitionMap - статич.обьект в ф-ции
// или 
#define OUTPUT(x) std::cout << x << std::endl

--------------------
Объясни другому - поймешь сам (Народная примета)
PM MAIL   Вверх
Hroft
Дата 1.4.2005, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 20.10.2003
Где: Москва

Репутация: нет
Всего: 3



Цитата(Fire @ 1.4.2005, 00:25)
Who cares (т.е. кого греет)!!!

Я, вообще-то, не против дефайна написал, а против знака "=" после оного.
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.