Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
26.01.2013, 02:11     Выделение памяти под матрицу в конструкторе #1
Почему компилятор подчеркивает эту строку?
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 02:11     Выделение памяти под матрицу в конструкторе
Посмотрите здесь:

C++ выделение памяти под переменную
Выделение памяти под динамическую матрицу в С C++
Выделение памяти под масссив C++
Выделение памяти под матрицу C++
C++ Выделение памяти под структуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11825 / 6804 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
26.01.2013, 02:13     Выделение памяти под матрицу в конструкторе #2
Может стоит включить GamePiece.h (или как он у Вас называется) в GameBoard.cpp?
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];
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11825 / 6804 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
26.01.2013, 02:32     Выделение памяти под матрицу в конструкторе #4
Цитата Сообщение от The_bolT Посмотреть сообщение
Но бы тогда компилятор и на эту строку бы реагировал
Ну тогда текст ошибки то можно?

Не по теме:

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

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

Это возможно потому что я еще не опридилив сам класс GamePiece ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11825 / 6804 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 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];
А это уже выделение памяти под объект и нужна информация о конструкторах класса
Yandex
Объявления
26.01.2013, 02:39     Выделение памяти под матрицу в конструкторе
Ответ Создать тему
Опции темы

Текущее время: 17:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru