Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Константный массив-член


Автор: Fedor 24.12.2005, 11:36
То ли я вообще туплю, то ли что... короче, нужно сделать константный массив - член класса.
Пытаюсь писать так:
Код

//...
private:
   const char massiv[4];
//...


Как потом инициализировать его значения? В конструкторе вроде не получается... Или это у меня руки кривые?

Автор: chipset 24.12.2005, 12:06
1. Использовать дефолтную инициализацию:
Код

class A {
private:
const char arr[5];
A () : arr() {
}
};

2. Снимать константность const_cast.
3. Пересмотреть задачу так чтобы эти нехорошие методы не использовать smile

Автор: Partizan 24.12.2005, 12:14
Может не самое лучшее решение, но я в своё время делал подобным образом:
Код

//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

class MyClass

{
 private:
  const char *array;
  const int a;
 public:
  MyClass(char arr[4]) : array(arr) {};
  ShowArr();
};

MyClass :: ShowArr()
{
 cout << array[0] << endl;
 cout << array[1] << endl;
 cout << array[2] << endl;
 cout << array[3] << endl;
}

//---------------------------------------------------------------------------

#pragma argsused
void main()
{
  char InitialArray[4]={'1','2','3','4'};
  MyClass Var(InitialArray);
  Var.ShowArr();
  getch();
}
//---------------------------------------------------------------------------

Автор: threef 26.12.2005, 21:10
Код


char *hello="hel";
class A
{
const char *a;    
public:
A():a(hello)
{
}
};


С массивом что-то по синтаксису непруха. И const_cast не помогает smile

Автор: Fedor 26.12.2005, 21:34
Да все, я обошел эту проблему - статиком сделал.
Добавлено @ 21:34
Всем спасибо за помощь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)