0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
1

Инициализация статической переменной в базовом классе

11.02.2016, 10:26. Показов 453. Ответов 3
Метки нет (Все метки)

Есть класс Tank. От этого класса будут наследники MyTank и EnemyTank. В классе Tank есть статическая переменная
_hWnd, она общая для всех этих классов. Её значение узнаю в конструкторе Tank. Как правильно присвоить значение?

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
// Файл Tank.h
class Tank
{
protected:
    static HWND         _hWnd;
    
public:
    Tank(HWND hWnd,  const TCHAR *szFileName,  Position position,  Direction direction);
    ~Tank();
 
};
 
 
// Файл Tank.cpp
#include "Tank.h"
 
HWND Tank::_hWnd = NULL;
 
 
Tank::Tank(HWND hWnd,  const TCHAR *szFileName,  Position position,  Direction direction)
{
    _hWnd = hWnd;  // Один раз присвоится значение или много раз?
    
};
Правильно ли я делаю?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2016, 10:26
Ответы с готовыми решениями:

Объявление статической переменной и статической функции в классе
Добрый вечер, столкнулся с проблемой и не могу решить. Есть класс SavingsAccount и в нем объявлена...

Инициализация статической константы в классе
собственно сабж как это сделать если константа имеет тип класса? (не интегральная) т.е. надо...

Инициализация статической переменной через QLineEdit
Всем привет. Собственно интересует следующее: color = ui->WaterColor->text(); В хедер...

Инициализация переменной в классе
Пытаюсь инициализировать в классе переменную и дальше ее использовать class Lines { double PI =...

3
3 / 3 / 1
Регистрация: 09.12.2015
Сообщений: 10
11.02.2016, 13:51 2
В данном случае _hWnd каждый раз присваивается новое значение.
Я бы добавил метод Init в котором бы и присваивал значение _hWnd. Тогда можно дернуть 1 раз Init и не передавать HWND каждый раз в конструкторе танка.
Посмотрим, что скажут более опытные чуваки
1
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
11.02.2016, 17:18  [ТС] 3
Имяслишкомдлинн, немного не понятно, в каком месте вызывать Init?
Я тут думаю, может этот hWnd сделать глобальной переменной. Тогда она в любом месте программы будет видна.
0
3 / 3 / 1
Регистрация: 09.12.2015
Сообщений: 10
12.02.2016, 05:30 4
В main'е, еще конкретнее - как только будет известно значение hWnd.
Делать ее глобальной для класса или для всей проги - это уже зависит от потребностей, но чем меньше область видимости сущности - тем лучше
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2016, 05:30

Инициализация переменной в шаблонном классе
Как правильно инициализировать шаблонную переменную в классе? Т.е. есть ли какая разница между x()...

Инициализация переменной структуры, определенной в классе
Добрый день. Имеется такой код: #include<iostream> class Qwe { int cl; struct Bla {

Проблема с взаимодействием динамической и статической памяти - обращение к статической переменной
Здравствуйте! Помогите решить проблему! Задача такая: написать сортировку бинарным деревом, так...

Указатель на потомка в базовом классе.
Мне нужно создать в базовом классе массив указателей на потомки этого класса. Помогите - как это...


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

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

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