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

Хитрое создание переменной - C++

Восстановить пароль Регистрация
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
19.10.2013, 19:30     Хитрое создание переменной #1
Позвольте азадачить всех, кому интересно.

Создаю переменные int konstruktor; int destruktor; не представляю, как их инициализировать нолями. По-замыслу, я хочу их ++konstruktor; и ++destruktor; в конструкторе и деструкторе соответственно. Соотвецтвено, я их не могу инициализировать в конструкторе и деструкторе. Инициализировал в функции, которую специально написал как мог- получается фигня.Первое, так первый же вызов конструктора остается нещитаным, во-вторых както воще рогато, некрасиво ужас, и еще и неполучается- смотрите, цифры выводятся нереальные. К стати, что же не так, я не понял.
пробовал int konstruktor; int destruktor; прописать просто же в майне, так его прикиньте в конструкторе не видно.
В общем я уже из мозгов выпал. А еще прикиньте, эти переменные можно вычесть одна из другой!
Так можно же ли сделать что-то подобное?

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Листинг 9.14.
 // Разрешение проблемы утечки памяти
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл смело и не раздумывая  вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 
 class SimpleCat
 {
public:
SimpleCat (int age, int weight);
~SimpleCat();
int GetAge() { return itsAge; }
int GetWeight() { return itsWeight; }
void  KonstructFunction();
private:
int itsAge;
int itsWeight;
int  konstruktor;  int  destruktor;
 };
 
 SimpleCat::SimpleCat(int age, int weight)
 {
itsAge = age;
itsWeight = weight;++konstruktor;
cout << "Konstruktor:  " << "   itsAge " << itsAge <<"    itsWeight " <<  itsWeight << "     konstruktor " <<  konstruktor << endl;
 }
 
SimpleCat::~SimpleCat()
 {
++destruktor;
cout << "Simple Cat Destructor...    "    << "     destruktor " <<  destruktor <<endl ;
 }
 
 SimpleCat & TheFunction(); 
 
 SimpleCat* TheFunction_MrGluck() ;
 
void SimpleCat::KonstructFunction()
 {  konstruktor=0;   destruktor=0;  cout << "KonstructFunction()...    "    << "     konstruktor " <<  konstruktor<< "     destruktor " <<  destruktor <<endl ; } 
 
 
 
 int main()
 {
SimpleCat Murtsic(5,6);
Murtsic.KonstructFunction();
SimpleCat Barsic(6,7);
SimpleCat & rCat = TheFunction();// Объявляем сылку rCat на то, что выдает TheFunction()  
int age = rCat.GetAge();
cout << "rCat " << age << " years old!\n";
cout << "&rCat: " << &rCat << endl;
SimpleCat * pCat = &rCat;
delete pCat;
system("pause  ");
 SimpleCat* rCat_MrGluck = TheFunction_MrGluck();
 cout << "rCat_MrGluck: " << rCat_MrGluck << endl;
    delete rCat_MrGluck;
system("pause  ");return 0;
 }
 
 SimpleCat &TheFunction()  //функция возвращяет ссылку на SimpleCat.
 {
SimpleCat * pFrisky = new SimpleCat(5,9);//Если оператор new может успешно выделить требуемый объем памяти, он возвращает указатель на начало области выделенной памяти.
//указатель на SimpleCat и одновременно засылка данных в конструктор
cout << "pFrisky: " << pFrisky << endl;
return *pFrisky; // разименовываем указатель на SimpleCat
 }
 
 
SimpleCat* TheFunction_MrGluck() 
{
    SimpleCat * pFrisky_MrGluck = new SimpleCat(15,9);
    cout << "pFrisky_MrGluck: " << pFrisky_MrGluck << endl;
    return pFrisky_MrGluck; // не разыменовываем указатель на SimpleCat
 }
Миниатюры
Хитрое создание переменной  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2013, 19:30     Хитрое создание переменной
Посмотрите здесь:

Хитрое разделение массивов. C++
Создание Новой переменной! C++
C++ Создание файлов с переменной в названии
C++ Создание переменной из строки json
Создание текстовой переменной C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2013, 19:32     Хитрое создание переменной #2
либо делать их глобальными и выносить из класса, либо статическими и оставлять в классе
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
19.10.2013, 19:35  [ТС]     Хитрое создание переменной #3
Спасибо!!!!!!!!! Пожалуста черкните одной строкой, как это правильно обьявить.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2013, 19:37     Хитрое создание переменной #4
с глобальными переменными, думаю, все понятно
со статическими так
C++
1
2
3
4
5
class class_name
{
   static int value;
};
int class_name::value = 0;
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
19.10.2013, 19:57  [ТС]     Хитрое создание переменной #5
СПАСИБО!!!

Добавлено через 14 минут
Не знаю, не жрет компилятор

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class SimpleCat
 {
public:
SimpleCat (int age, int weight);
~SimpleCat();
int GetAge() { return itsAge; }
int GetWeight() { return itsWeight; }
void  KonstructFunction();
private:
int itsAge;
int itsWeight;
static int  konstruktor= 0;  static int  destruktor= 0;
 };
1>d:\проги\utetsca\utetsca\utetsca.cpp(23): error C2864: SimpleCat::konstruktor: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
1>d:\проги\utetsca\utetsca\utetsca.cpp(23): error C2864: SimpleCat::destruktor: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа

Добавлено через 1 минуту
А, щас я еще так попробую..

Добавлено через 1 минуту
ЕСТЬ!!!!!!!!!!!!!!

Добавлено через 1 минуту
Офигенно!!!!!!!!!!!!!!
Yandex
Объявления
19.10.2013, 19:57     Хитрое создание переменной
Ответ Создать тему
Опции темы

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