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

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

Войти
Регистрация
Восстановить пароль
 
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
#1

Выделение памяти под матрицу в конструкторе - C++

26.01.2013, 02:11. Просмотров 334. Ответов 5
Метки нет (Все метки)

Почему компилятор подчеркивает эту строку?
C++
1
mCells[i] = new GamePiece[mHeight];
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//GameBoard.cpp
#include "GameBoard.h"
 
const int GameBoard::kDefaultHeight;
const int GameBoard::kDefaultWidth;
 
GameBoard::GameBoard(int inWidth,int inHeight)
    : mHeight(inWidth), mWidth(inHeight)
{
    mCells = new GamePiece* [mWidth];
 
    for(int i=0;i<mWidth;i++)
        mCells[i] = new GamePiece[mHeight];
}
 
GameBoard::GameBoard(const GameBoard &src)
{
    copyFrom(src);
}
 
GameBoard::~GameBoard()
{
    for(int i=0;i<mWidth;i++)
        delete [] mCells[i];
    delete [] mCells;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//GameBoard.h
#ifndef GameBoard_H
#define GameBoard_H
 
class GamePiece;
 
class GameBoard
{
public:
    GameBoard(int inWidth = kDefaultWidth,int inHeight = kDefaultHeight);
    GameBoard(const GameBoard &);
    ~GameBoard();
    GameBoard operator=(const GameBoard &);
    void setPieceAt(int,int,const GamePiece&);
    GamePiece& getpieceAt(int,int);
    const GamePiece& getPieceAt(int,int)const;
 
    int getHeight() const {return mHeight;};
    int getWidth() const {return mWidth;};
    static const int kDefaultWidth=10;
    static const int kDefaultHeight=10;
 
protected:
 
    void copyFrom(const GameBoard &);
    GamePiece** mCells;
    int mHeight,mWidth;
};
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 02:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти под матрицу в конструкторе (C++):

Выделение памяти под матрицу - C++
Всем привет. float **AllocMat(int Rows, int Colomns) { float ** Mat; try { Mat = new...

Выделение памяти под матрицу - C++
Существует такой класс: class matr{ public: double **m; // адрес матрицы int mi, my; //стобцы, строки //функции ...

Выделение памяти под матрицу - C++
Всем доброго времени суток! Есть такая проблема, у меня есть свой класс Cell. Мне нужно создать матрицу объектов этого типа и выделить под...

Выделение памяти под динамическую матрицу в С - C++
Люди помогите с 2 вопросами а то я чет не понимаю 1.Выделение памяти под динамическую матрицу в С(напише плиз как обьявлется матрица и...

выделение памяти в конструкторе - C++
Здравствуйте! Объясните пожалуйста, зачем выделять память в конструкторе, если выделяется память под объект? массивы. (тут все...

Реализовать выделение памяти в конструкторе - C++
Объясните пожалуйста, как реализовать выделение памяти в 2 конструкторах, для того, чтоб контролировать размерность строки. Код : ...

5
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
26.01.2013, 02:13 #2
Может стоит включить GamePiece.h (или как он у Вас называется) в GameBoard.cpp?
0
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
26.01.2013, 02:16  [ТС] #3
У меня в файле GameBoard.h есть предварительно опридилений этот класс
C++
1
class GamePiece;
Но бы тогда компилятор и на эту строку бы реагировал
C++
1
mCells = new GamePiece* [mWidth];
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
26.01.2013, 02:32 #4
Цитата Сообщение от The_bolT Посмотреть сообщение
Но бы тогда компилятор и на эту строку бы реагировал
Ну тогда текст ошибки то можно?

Не по теме:

Сто процентов что-то вроде "Недопустимый тип"

0
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
26.01.2013, 02:36  [ТС] #5
class GamePiece
недопустимый неполный тип

Это возможно потому что я еще не опридилив сам класс GamePiece ?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
26.01.2013, 02:39 #6
Цитата Сообщение от The_bolT Посмотреть сообщение
недопустимый неполный тип
Это возможно потому что я еще не опридилив сам класс GamePiece ?
Вот поэтому не спорьте и включите хедер с описанием класса в GameBoard.cpp или в GameBoard.h!!!

Цитата Сообщение от The_bolT Посмотреть сообщение
Но бы тогда компилятор и на эту строку бы реагировал
C++
1
mCells = new GamePiece* [mWidth];
Это выделение памяти под указатель и поэтому ему кроме имени класса ничего не нужно.
C++
1
mCells[i] = new GamePiece[mHeight];
А это уже выделение памяти под объект и нужна информация о конструкторах класса
1
26.01.2013, 02:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2013, 02:39
Привет! Вот еще темы с ответами:

Выделение памяти в конструкторе с параметрами - C++
Приветствую есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; class Basic { ...

Выделение и освобождение памяти в конструкторе и деструкторе - C++
Есть программа с классом содержащим обьекты векторы. Однако по кончанию программы выбивате ошибку _block_type_is_vali(phead-&gt;nblockuse)....

Организовать динамическое выделение памяти в конструкторе класса для соответствующих данных-членов - C++
Мне нужно, чтобы под элементы отводилась динамическая память, но я не знаю, как это можно реализовать. #include &lt;iostream&gt; ...

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


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

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

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