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

Объявление статического объекта - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
15.03.2013, 22:28     Объявление статического объекта #1
Объясните пожалуйста как правильно объявить статический объект. У меня в кейсе создаётся объект,но мне он нужен и за пределами кейса,как его сделать статическим?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.03.2013, 22:35     Объявление статического объекта #2
Что вы подразумеваете под "кейсом"?

Так вам надо?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A {
 public:
  A(int, int) {}
};
 
class B {
 public:
  static const A SIMPLE;
};
 
const A SIMPLE(1, 1);
 
int main(int argc, char **argv) {
  A a = B::SIMPLE;
  return 0;
}
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
15.03.2013, 22:36  [ТС]     Объявление статического объекта #3
условный оператор switch
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.03.2013, 22:36     Объявление статического объекта #4
static A a;//статический объект класса А
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.03.2013, 22:37     Объявление статического объекта #5
Подробнее о задаче тогда. С примером кода, пусть даже не компилирующимся.
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
15.03.2013, 22:49  [ТС]     Объявление статического объекта #6
Я оформляю пользовательский интерфейс и после первого оператора switch мне нужен ещё один,в котором мне понадобиться один из созданных объектов в первом операторе switch. Вот этот икс мне нужен статическим, чтобы его и дальше использовать
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
cout<<"Выберите прогрессию:\n   1) Арифметическая\n   2) Геометрическая\n";
    int k=getch();
    
    
    switch (k)
    {
        case '1':
            {
            cout<<"Вы выбрали арифметическую прогрессию\n  - Установите значение 1 члена прогрессии ";
            TArProgression x;
            x.SetFirst(k);
            cout<<"  - Установите шаг прогрессии ";
            x.SetDelta(k);
            
        
            break;
            }
        case '2':
            {
            cout<<"Вы выбрали геометрическую прогрессию\n Установите значение 1 члена прогрессии ";
            TGeoProgression x;
            x.SetFirst(k);
            cout<<"Установите шаг прогрессии ";
            x.SetDelta(k);
            break;
            }
    } 
cout<<"Выберете следующую операцию:\n 1) Получить шаг прогрессии \n 2) Получить член прогрессии с номером n \n 3) Получить сумму первых n членов";
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.03.2013, 23:27     Объявление статического объекта #7
Цитата Сообщение от SKS-65 Посмотреть сообщение
x.SetDelta(k);
дык напишите static "имя класса" x; потипу static A x; при объявлении объекта класса.
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
15.03.2013, 23:46  [ТС]     Объявление статического объекта #8
но он его почему то всё равно не хочет в дальнейшем использовать,я пишу static TArProgression x; далее ниже он мне говорить что идентификатор не определён
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
16.03.2013, 00:02     Объявление статического объекта #9
почему не определен? определи его не в свитче, а заранее
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
16.03.2013, 00:06  [ТС]     Объявление статического объекта #10
там он у меня ругается на то что имя одинаковое,а мне надо чтобы у обоих объектов этих классов было одно имя
Kins
 Аватар для Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
16.03.2013, 00:11     Объявление статического объекта #11
Цитата Сообщение от SKS-65 Посмотреть сообщение
там он у меня ругается на то что имя одинаковое,а мне надо чтобы у обоих объектов этих классов было одно имя
такого поидее не может быть -тоесть одинаковых имен объектов, хотя хз, не сталкивался с таким
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
16.03.2013, 00:18  [ТС]     Объявление статического объекта #12
ну в свитче то у меня создаётся только один,там ведь или то или это,а здесь оба
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 01:16     Объявление статического объекта
Еще ссылки по теме:

C++ Объявление класса, создание объекта и вызов функции-члена
C++ Объявление объекта класса
C++ Классы объявление объекта

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

Или воспользуйтесь поиском по форуму:
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
16.03.2013, 01:16     Объявление статического объекта #13
а что если с наследованием поиграться? Создать базовый класс Прогрессия, от него отнаследовать арифметическую и геометрическую прогрессию.
Объвить указатель на базовый класс перед switch, а в case ветвях этому указателю присвоить нужный объект.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Progression *x;
switch(...)
{
    case '1':
        ...
        x = new TArProgression();
        x->SetFirst(k);
        ...
        break;
    case '2':
        ...
        x = new TGeoProgression();
        x->SetFirst(k);
        ...
        break;
}
Yandex
Объявления
16.03.2013, 01:16     Объявление статического объекта
Ответ Создать тему
Опции темы

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