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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический массив произвольного класса 
V
    Опции темы
GVD
Дата 29.7.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ситуация такова:
 в классе должен быть динамический массив тип данных которого определяется в процессе выполенния программы (BYTE, WORD или DWORD), естественно все операции по обработке элементов массива реализуются в методах данного класса. 
Простое объявление указателя на void не проходит. 
Кто-нибудь что-либо подобное делал? smile  
PM MAIL   Вверх
Daevaorn
Дата 29.7.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

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



GVD, 
Возможны варианты:
1. union
2. boost::any
3. всё-таки void* 
PM MAIL WWW   Вверх
GVD
Дата 29.7.2006, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если брать union, то в методах класса необходимо прописывать разные имена переменных- элементов массива. Наверное проще объявить три массива разного типа. Или я не прав?

Если все-таки void , то исходник плизззз!  smile  Бо я уже сам намаялся.  smile 

Про саму библиотеку boost слышал,  но если можно, то поподробнее. 
PM MAIL   Вверх
ILAgent
Дата 30.7.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно шаблонами, проще - контейнерами. А что за задача, почему всё нельзя DWORD сделать ? 
PM MAIL   Вверх
GVD
Дата 30.7.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача - разработка класса реализации генетического алгоритма. Каждый ген представляется некоторым количеством бит и выбор этого количества пользователь определяет в процессе функционирования программы, т.е. заранее нельзя определить тип массива. 
И насколько я понимаю при использовании шаблонов в классе также необходимо указать тип переменных. Или я не прав? smile   
PM MAIL   Вверх
Oleg_Ci
Дата 30.7.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


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

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



Код

#include <stdlib.h>
#include <iostream>
using namespace std;

class gen
{
  // сортировка разных типов массивов :
public:
  template <typename T>
  void fun( T massiv[], int size )
  {
    T buf;
    for ( int i=0; i<size-1; i++ )
      if ( massiv[i]>massiv[i+1] )
      {
        buf = massiv[i];
        massiv[i] = massiv[i+1];
        massiv[i+1] = buf;
        if ((i-=2)<0) i=-1;
      }
  }
};

void main()
{
  int a[3] = {3,5,1};
  float f[3] = {5,4,7};
  gen g;
  g.fun( a, 3 );  // int
  g.fun( f, 3 );  // float
  system("pause");
}
 
PM MAIL   Вверх
GVD
Дата 30.7.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем спасибо!
Сделал с помощью void и memcpy. Шаблоны не подошли (да и не могли).
 smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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