Мой код передает компилятор, но у меня есть вопрос о концепции указателя.C++ назначить 2D-массив объекту
main.cpp:
int main(int argc, const char * argv[])
{
int inputPuzzle[3][3];
std::cout << "Set the puzzle: " << "\n";
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cin >> inputPuzzle[i][j];
}
}
puzzle puzzle_1 = *new puzzle(inputPuzzle);
puzzle_1.display();
return 0;
}
puzzle.h:
class puzzle
{
public:
puzzle();
puzzle(int [][maxCol]);
~puzzle();
public:
int puzz [maxRow][maxCol];
};
puzzle.cpp:
puzzle::puzzle(int a[][maxCol])
{
for (int i = 0; i < maxRow; i++) {
for (int j = 0; j < maxCol; j++) {
puzz[i][j] = a[i][j];
}
}
}
Мой вопрос об утверждении: puzzle puzzle_1 = *new puzzle(inputPuzzle);
Почему мне нужно добавить «*» в перед новым объектом, в котором я хочу назначить 2D-массив?
Привет-о течи мгновенной памяти. Пожалуйста, прочитайте книгу (http: // stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) на C++, чтобы получить полную информацию о том, как использовать указатели. Такие вещи были [заданы до] (http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and-what-can-be-done-to-overcome), но в настоящее время общие концептуальные вопросы о том, как использовать указатели, неодобрились. –
Потому что код плохой и неправильный;) –
Возможный дубликат https://www.youtube.com/watch?v=i49_SNt4yfk (кстати, это не имеет ничего общего с вашим 2D-массивом). –