инициализация в конструкции массива обьектов
От: Аноним  
Дата: 19.07.14 07:59
Оценка:
можно ли проинициализировать в конструкторе массив указателей на объект или массив ссылок ?
используя старый с++ стандарт
gcc 4.7

вот к примеру так
class mainref
{
public:
};

class initref
{
public:
        mainref (&ar)[2];
        initref(mainref & rf) :
                ar{rf,rf} //<-- так ошибка
        {
        }
};


или так
class mainref
{
public:
};

class initref
{
public:
        mainref *ar[2];
        initref(mainref & rf) :
                ar[0](&rf), //<-- ошибка
                ar[1](&rf)  //<-- ошибка
        {
        }
};


но предпочтительнее первый вариант

или невозможно?
всяческие обертки над классами что бы проинициализировать и иметь доступ как к массиву — не подходят,
нужно исправить только там где указаны ошибки, либо в первом случае, либо во втором
Re: инициализация в конструкции массива обьектов
От: Кодт Россия  
Дата: 19.07.14 08:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>можно ли проинициализировать в конструкторе массив указателей на объект или массив ссылок ?


Массив ссылок — вообще нельзя (в 11 стандарте тоже). А массив указателей — можно присваиваниями в теле конструктора.
Кстати, T(&arr)[2] — это ссылка на массив элементов, а не массив ссылок.

A>всяческие обертки над классами что бы проинициализировать и иметь доступ как к массиву — не подходят,

A>нужно исправить только там где указаны ошибки, либо в первом случае, либо во втором

А в чём, собственно, проблема? Бэкпорт на старый стандарт, или какой-то шаблон параметризован неудачным типом?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.