2015-02-08 3 views
0
class GameController; 

class Snake : public QGraphicsItem { 
public: 
    enum Direction { 
     NoMove, 
     MoveLeft, 
     MoveRight, 
     MoveUp, 
     MoveDown 
    }; 

    Snake(GameController & controller); // <<<<<<<<< 
}; 


Snake::Snake(GameController &controller) 
: head(0, 0) 
, growing(7) 
, speed(3) 
, moveDirection(NoMove) 
, controller(controller) 
{ } 

Что сделал это утверждение? Я имею в виду, что делает этот параметр при инициализации конструктора?параметр, переданный в инициализации конструктора в C++

+2

Это зависит от того, как вы его реализуете. – timrau

+0

Он не компилируется, поскольку у Змеи нет члена или базы под названием 'controller' - или даже' head', 'grow' и т. Д. Без полного примера, как кто-нибудь может сказать? –

ответ

0
Snake(GameController & controller); 

Что это заявление сделал?

Это просто объявление конструктора Snake с использованием ссылки GameController.

Я имею в виду, что делает этот параметр при инициализации конструктора?

Параметр сам ничего не делает, когда инициализируется конструктор . Код тела конструктора может вызывать любые операции над ним или хранить его в переменной-члене класса (что на самом деле имеет дело с вашей дополнительной информацией).

Но это не может быть здесь действительно определенно, так как мы не видим определения конструктора Snake.

+0

gamecontroller - это сам класс. Чтобы реализовать его сначала, нам нужно создать экземпляр, не так ли ?. это создание экземпляра? если так как конструктор змея это внутри змея :: Snake (GameController & контроллер): головой (0, 0), растет (7), скорости (3), moveDirection (NoMove), контроллер (контроллер) { } – Ccr

+0

@Ccr _ "нам нужно создать экземпляр, не так ли?" _ Да, сначала вам нужно создать экземпляр 'GameController' и передать его при создании экземпляра змеи. [Добавить дополнительную информацию о теле конструктора на ваш вопрос пожалуйста.] (Http://stackoverflow.com/posts/28394849/edit) –

0

Что он делает, это зависит от кода вашего конструктора.

Параметр вступает в силу при вызове конструктора.

Когда вызывающий конструктор вызывается, он передает значение по ссылке, кроме этого ничего не может быть сказано, если вы не предоставите свой код.

+0

Есть много файлов cpp и заголовков это содержание snake.cpp # включают в себя #include "constants.h" #include "gamecontroller.h" #include "snake.h" статическая Const qreal SNAKE_SIZE = 10; змея :: Змея (GameController и контроллер): головка (0, 0), растет (7), скорость (3), moveDirection (NoMove), контроллер (контроллер) { } – Ccr

+0

Параметр проходит адрес любого объекта, который вы отправляете ему, а затем контроллер объекта отправляется контроллеру (контроллеру) !!!!!!!.Мы не можем дать более подробное объяснение, пока вы не дадите нам больше своего кода или, по крайней мере, не намерены использовать свой код, чтобы мы могли понять, что делает каждая функция (то есть, если вы тот, кто действительно сделал этот код) –

Смежные вопросы