Подскажите пожалуйста как решить проблему.
Написал небольшой класс Кольцевой массив, для удобства приема данных из порта.
У него есть конструктор только с параметром ( в котором я указываю его размер).
Когда хочу использовать этот массив в другом классе, ничего не выходит.
class foo
{
...
MyArray Array(100);
...
}
Вызвать конструктор MyArray из конструктора foo я тоже не могу. Работать с MyArray
через указатель, я не хочу, так как я перегрузил оператор [], а через указатель выходит
абракадабра типа Array->operator[](i). Можно ли так перегрузить operator[] чтобы работать через указатель красиво?
Или сконструировать экземпляр MyArray чтобы обращаться к нему напрямую.
Вопросы наверное глупые, так что звиняйте.
Вот несколько вариантов:
(1)
class foo
{
private:
MyArray Array{ 100 };
};
(2)
class foo
{
public:
foo() : Array(100) {}
private:
MyArray Array;
};
PS: и почитай какую-нибудь книжку по С++ наконец
Здравствуйте, Илья, Вы писали:
Почти ничего не понял из того, что вы написали но всё-же предложу свой вариант (вслепую):
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 чтобы обращаться к нему напрямую.
И>Вопросы наверное глупые, так что звиняйте.
Здравствуйте, 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 вариант работает.
Что константы-члены таким образом инициализируются, я помню, а что также инициализируются объекты-члены не знал.
Спасибо.