Re: Класс с конструктором - член класса
От: ArtDenis Россия  
Дата: 19.02.14 15:45
Оценка: -1
Вот несколько вариантов:

(1)
class foo
{
private:
    MyArray Array{ 100 };
};

(2)
class foo
{
public:
    foo() : Array(100) {}

private:
    MyArray Array;
};


PS: и почитай какую-нибудь книжку по С++ наконец
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Класс с конструктором - член класса
От: Илья  
Дата: 19.02.14 15:37
Оценка:
Подскажите пожалуйста как решить проблему.
Написал небольшой класс Кольцевой массив, для удобства приема данных из порта.
У него есть конструктор только с параметром ( в котором я указываю его размер).
Когда хочу использовать этот массив в другом классе, ничего не выходит.
class foo
  {
  ...
  MyArray Array(100);
  ...
  }

Вызвать конструктор MyArray из конструктора foo я тоже не могу. Работать с MyArray
через указатель, я не хочу, так как я перегрузил оператор [], а через указатель выходит
абракадабра типа Array->operator[](i). Можно ли так перегрузить operator[] чтобы работать через указатель красиво?
Или сконструировать экземпляр MyArray чтобы обращаться к нему напрямую.
Вопросы наверное глупые, так что звиняйте.
Re: Класс с конструктором - член класса
От: VladFein США  
Дата: 19.02.14 20:19
Оценка:
Здравствуйте, Илья, Вы писали:

И>Подскажите пожалуйста как решить проблему.

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

Здесь надо остановиться и подумать: а нужно ли иметь возможность ковыряться в массиве одного класса из другого? (подсказка — нет, не нужно)
Re: Класс с конструктором - член класса
От: GhostCoders Россия  
Дата: 20.02.14 06:02
Оценка:
Здравствуйте, Илья, Вы писали:

Почти ничего не понял из того, что вы написали но всё-же предложу свой вариант (вслепую):


class foo
{
 ....
    MyArray Array(100);

   MyArrayItem& operator[](int index)
   {
      return Array[index]; // просто перенаправление
   }

   MyArrayItem operator[](int index) const // const вариант
   {
      return Array[index]; // просто перенаправление
   }

};



И>Подскажите пожалуйста как решить проблему.

И>Написал небольшой класс Кольцевой массив, для удобства приема данных из порта.
И>У него есть конструктор только с параметром ( в котором я указываю его размер).
И>Когда хочу использовать этот массив в другом классе, ничего не выходит.
И>
И>class foo
И>  {
И>  ...
И>  MyArray Array(100);
И>  ...
И>  }
И>

И>Вызвать конструктор MyArray из конструктора foo я тоже не могу. Работать с MyArray
И>через указатель, я не хочу, так как я перегрузил оператор [], а через указатель выходит
И>абракадабра типа Array->operator[](i). Можно ли так перегрузить operator[] чтобы работать через указатель красиво?
И>Или сконструировать экземпляр MyArray чтобы обращаться к нему напрямую.
И>Вопросы наверное глупые, так что звиняйте.
Третий Рим должен пасть!
Re[2]: Класс с конструктором - член класса
От: Илья  
Дата: 20.02.14 06:16
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Вот несколько вариантов:


AD>
AD>(1)
AD>class foo
AD>{
AD>private:
AD>    MyArray Array{ 100 };
AD>};

AD>(2)
AD>class foo
AD>{
AD>public:
AD>    foo() : Array(100) {}

AD>private:
AD>    MyArray Array;
AD>};
AD>


AD>PS: и почитай какую-нибудь книжку по С++ наконец


Спасибо, 2 вариант работает.
Что константы-члены таким образом инициализируются, я помню, а что также инициализируются объекты-члены не знал.
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.