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

Поиск:

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


Эксперт
***


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

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




Как лучше реализовать такую штуку?
Пробывал define так потом нельзя доступиться к переменным.
Короче мне нужно огбьявить размер масива и сам масив, конечно, чтобы я потом смог получиь данный размер, в плане как переменная класа.


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Код
#include <vector>
std::vector<"нужный_класс"> somevector;

Оно?
Хотя жестко размер ты не сможешь задать при создании..

Это сообщение отредактировал(а) chipset - 28.3.2005, 20:24


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 20:24)
Код
#include <vector>
std::vector<"нужный_класс"> somevector;

Оно?
Хотя жестко размер ты не сможешь задать при создании..

Нет не то. У меня свой клас.
И там нужно разместить массив, например целых чисел.
Как это сделать чтобы размер масива была членом класса. Тобиш примерно так

Const int size;
int array[size]

Сорри если как-то не так выразился.


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Код

const int size = 200;
class foo
{
public:
    int array[size];
};

Так?
Ну можно ещё size запихнуть в класс.

Это сообщение отредактировал(а) chipset - 28.3.2005, 20:54


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 20:54)
Код

const int size = 200;
class foo
{
public:
    int array[size];
};

Так?
Ну можно ещё size запихнуть в класс.

const int size = 10;
int array[size];

c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(42) : error C2258: illegal pure syntax, must be '= 0'
c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(42) : error C2252: 'size' : pure specifier can only be specified for functions
c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(43) : error C2065: 'size' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(43) : error C2057: expected constant expression
c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(43) : warning C4200: nonstandard extension used : zero-sized array in struct/union
c:\program files\microsoft visual studio\myprojects\skb_rhytm\karavayevidachi\xsender\control.h(53) : error C2229: class 'IoControl' has an illegal zero-sized array

Так что-ли?


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Ты что-то неправильно делаешь, покажи тот код который ты компилировал.
Вот:
Код

#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <process.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

 const int size = 200;
class foo
{
public:
    int array[size];
};
int main()
{    
    foo _foo;
    _foo.array[100] = 0;
}

Компилицца и не жужжит, компилер VC7.1.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 21:04)
Ты что-то неправильно делаешь, покажи тот код который ты компилировал.
Вот:
Код

#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <process.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

 const int size = 200;
class foo
{
public:
    int array[size];
};
int main()
{    
    foo _foo;
    _foo.array[100] = 0;
}

Компилицца и не жужжит, компилер VC7.1.

Ну ты что издеваешся?

Если константа за пределами класа компилиться нормально, и я про ЭТО знаю. Ты, простите вы, внесите константу в класс....и полезут ероры.

у меня VC++ 6.0

П.С.
Я попробовал с внешней константой и все сработало. Но меня так не устраивает поскольку мне нужно знать размер масссссива с которым мне потом прийдеться рАботать.
Предупреждаю лишнее прения и последующие непонятки.


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Продолжаем извращения и делаем так: ;P
Код

class foo
{
public:
    static const int size = 200; 
    int array[size];
};



Это сообщение отредактировал(а) chipset - 28.3.2005, 21:48


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Те же, входит Гамлет:

: error C2258: illegal pure syntax, must be '= 0'
: error C2252: 'size' : pure specifier can only be specified for functions
: error C2065: 'size' : undeclared identifier
: error C2057: expected constant expression
: warning C4200: nonstandard extension used : zero-sized array in struct/union
: error C2229: class 'IoControl' has an illegal zero-sized array


Короче так тоже не фурычит!
А по компилятору ты не прав жужжжит и матом кроет smile


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Цитата(Nuzur @ 28.3.2005, 10:57)
: error C2229: class 'IoControl' has an illegal zero-sized array

А причем тут IoControl?
Какой у тебя компилер?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 21:59)
Цитата(Nuzur @ 28.3.2005, 10:57)
: error C2229: class 'IoControl' has an illegal zero-sized array

А причем тут IoControl?
Какой у тебя компилер?

IoControl имя моего класа.
И не уходите от темы.....

Хотите мне мозги запудрить чтобы я про сабж забыл smile

Суть там не в названии класса, он копилиться и РАБОТАЕТ отлично, но с масивом он бы стал лучше smile
Он даже компилиьтся с внешней константой.
Но когда я делаю, деже

static const int size = 10;

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

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



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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Ещё раз повторю:
Код

class foo
{
    public:
    static const int size = 10;
};

Компилится как на VC7.1, так и на gcc.
Можете проверить..
Что у вас там написано, я знать не могу...

Это сообщение отредактировал(а) chipset - 28.3.2005, 22:12


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nuzur
Дата 28.3.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 22:11)
Ещё раз повторю:
Код

class foo
{
    public:
    static const int size = 10;
};

Компилится как на VC7.1, так и на gcc.
Можете проверить..
Что у вас там написано, я знать не могу...

Раз

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Screen.JPG


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


Эксперт
***


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

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



Цитата(chipset @ 28.3.2005, 22:11)
Ещё раз повторю:
Код

class foo
{
    public:
    static const int size = 10;
};

Компилится как на VC7.1, так и на gcc.
Можете проверить..
Что у вас там написано, я знать не могу...

Два

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  ForChipset.rar


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Что ещё раз потверждает что VC6 mustdie. Он плохо поддерживает стандарт..
Почему не хочешь использовать вектор?

Это сообщение отредактировал(а) chipset - 28.3.2005, 22:43


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Страницы: (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.0783 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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