У меня есть класс проигрывателя, который использует мой класс DirectX Graphics для создания поверхностей и рисования спрайтов.
Я передаю графический класс как указатель на метод класса проигрывателя следующим образом:
**game.cpp**
m_pPlayer->Init(Graphics* graphics);
Внутри класса проигрывателя мой метод Init передает указатель на другой метод указателя. Есть ли какая-то польза от создания другого графического указателя в классе проигрывателя и копирования вместо него аргумента указателя?
Итак, это:
**player.cpp**
m_pSurface->Init(graphics, m_width, m_height);
против этого:
**player.cpp**
m_pGraphics = graphics;
m_pSurface->Init(m_pGraphics, m_width, m_height);
Я знаю, что наличие указателя m_pGraphics позволяет мне снова использовать указатель в том же классе, например, в моем методе рисования, но я все равно вызываю метод в классе проигрывателя, так что я не могу просто продолжать передавать указатель снова и снова?
Это просто вопрос стиля и вряд ли повлияет на производительность. Копирование указателей очень дешево, и я бы оставил его на усмотрение компилятора.
Если player
использует Graphics
Многое было бы разумно хранить указатель в переменной-члене, а не передавать его постоянно. Это может сделать подписи функции-члена на player
короче что хорошо.
Вы должны быть уверены, что указатель члена на Graphics
объект остается в силе всякий раз, когда он используется. Это все еще правильно Graphics
объект и он все еще жив? Если вы передадите указатель каждый раз, у вас может не быть этой сложности.