Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gagarin0
2 / 2 / 0
Регистрация: 01.10.2010
Сообщений: 22
#1

Описать класс для реализации двумерного массива - C++

01.10.2010, 13:14. Просмотров 672. Ответов 6
Метки нет (Все метки)

Хочу сделать класс, который будет описывать поле размером 5х3.
Для этого использую вложенные друг в друга векторы. Но при реализации функций класса компилятор (Борланд С++ 6) выдает ошибки:
Код:

E2235 Member function must be called or its address taken
E2062 Invalid indirection


Вот код:
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef  vector< char > fieldlines;
typedef vector< fieldlines > field;
 
class Field
{
        static const int SIZE_X=5, SIZE_Y=3;
        field _field(SIZE_X, vector< char > (SIZE_Y));
public:
        void clear_field(void)
        {
                for(int i=0;i<SIZE_Y;i++)
                        for(int j=0;j<SIZE_X;j++)
                                _field[j][i]='0';
        }
        friend ostream& operator<<(ostream&, Field&);
        char get_symbol(int y, int x)
        {
                return _field[y][x];
        }
};
Подскажите, пожалуйста, что это означает и как с ним бороться!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2010, 13:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать класс для реализации двумерного массива (C++):

Создать класс для реализации динамического массива - C++
Доброго времени суток! Помогите создать класс который реализует динамический массив(с динамическим выделением памяти и перевыделением),...

Класс для двумерного динамического массива - C++
Вот написал код для двумерного динамического массива с перегруженым оператором= и +. Собственно код работает в MS VS 2010, но меня...

Описать класс для вычисления суммы непарных элементов массива - C++
Задача. Описать класс для решения поставленной задачи (сума непарных елементов). В классе предусмотреть: 1. Дополнительный конструктор. ...

Как описать функции ввода и вывода двумерного массива? - C++
Не могу разобраться с описанием функций ввода и вывода двумерного массива, прошу помочь пожалуйста.

Создать класс для реализации комплексных чисел - C++
Класс: Комплексное число, pr принимает значение в зависимости от представления числа: pr=1, алгебраическая, 0-тригонометрическая. ...

Написать класс для реализации полей Галуа - C++
Здравствуйте! Нужно реализовать поля Галуа GF (2^n). 1. Запросить у пользователя ввести число n. 2. Представить результат в виде...

6
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
01.10.2010, 14:46 #2
Не буду говорить точно, что ошибка в этом, но не следует обращаться к элементам вектора через индексы, используйте итераторы. Как это сделать с вложенными векторами, точно не знаю.
0
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.10.2010, 18:21 #3
neske, Это не ошибка в большинстве случаев. + это удобнее, если вектор двумерный. имхо.
0
gooseim
Эксперт С++
509 / 413 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
01.10.2010, 18:33 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef  vector< char > fieldlines;
typedef vector< fieldlines > field;
 
class Field
{
        static const int SIZE_X=5, SIZE_Y=3;
        field _field;
public:
        Field(): _field(SIZE_X, vector< char > (SIZE_Y)) {}
        void clear_field(void)
        {
                for(int i=0;i<SIZE_Y;i++)
                        for(int j=0;j<SIZE_X;j++)
                                _field[j][i]='0';
        }
        friend ostream& operator<<(ostream&, Field&);
        char get_symbol(int y, int x)
        {
                return _field[y][x];
        }
};
1
gagarin0
2 / 2 / 0
Регистрация: 01.10.2010
Сообщений: 22
01.10.2010, 20:31  [ТС] #5
gooseim, то есть я его просто не создавал, так получается? Двумерный массив, в смысле...
0
gooseim
Эксперт С++
509 / 413 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.10.2010, 18:00 #6
gagarin0, если конструктор объекта внутри какого-то класса содержит несколько параметров, то его обязательно надо инициализировать в конструкторе этого класса после знака ':'. Иначе просто не работает. Такой синтаксис C++.
Так писать нельзя:
C++
1
2
3
4
class Field
{
        field _field(SIZE_X, vector< char > (SIZE_Y));
}
0
gagarin0
2 / 2 / 0
Регистрация: 01.10.2010
Сообщений: 22
03.10.2010, 00:23  [ТС] #7
Ага...ясно...Спасибо, Вам!
0
03.10.2010, 00:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2010, 00:23
Привет! Вот еще темы с ответами:

Вывод двумерного массива используя собственный класс - C++
Доброго времени суток! дайте совет что не так сделал. нужно вывести двумерный массив с помощью класса: #include &quot;stdafx.h&quot; ...

Класс для реализации различных видов поиска элемента в массиве - C++
Привет. Мне нужно написать класс для поисков элемента. помогите написать класс. И еще вопрос есть: как на формах зарандомить случайный...

Создать класс для реализации комплексных чисел в алгебраической форме - C++
Создать класс для реализации комплексных чисел в алгебраической форме.Используя функции с объектом в качестве аргумента,реализовать...

Передача комплексных чисел в производный класс для реализации векторов - C++
Дано задание: Написать программу создания класса для реализации комплексных чисел. Предусмотреть возможность сложения и вычитания...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.