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

Обход ограниечения перечислений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с++ Освобождение памяти http://www.cyberforum.ru/cpp-beginners/thread942049.html
Здравствуйте, объявляю в классе: А ** а; Далее выделяю память в функции: а=0; a = new A*; for(uint i=0;i<5;++i) { a = new A;
C++ SDL - первый урок Помогите, кто знает. Есть код: //#include "stdafx.h" #include "SDL.h" int main(int argc, char* args) { SDL_Surface* hello = NULL; SDL_Surface* screen = NULL; ... http://www.cyberforum.ru/cpp-beginners/thread942031.html
C++ Пропускает операторы считывания информации после первой итерации
Доброго времени суток всем. Все кому лень читать предистории можете смело пропускать следующие строки, смотреть на код, и возникшую проблему которую я опишу под ним. Я лишь недавно занялся изучением...
C++ Как использовать переменную типа string в заголовочном файле?
Есть файл cpp в котором объявлена переменная string head; Как мне использовать эту переменную в заголовочном файле?
C++ Не собирается проект http://www.cyberforum.ru/cpp-beginners/thread941998.html
bool CreateDisk(char *cmd) { char *dsk_name=GetParameter(cmd, "name="); int fd; //|предупреждение: variable «fd» set but not used | if (dsk_name == NULL) { ...
C++ Полиморфизм Всем доброго времени суток.Сразу к делу. Если описывать с помощью полиморфизма подклассы и потом динамично их создавать ,то можно вызывать замещенные(перегруженные) виртуальные функции описанные в... подробнее

Показать сообщение отдельно
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
22.08.2013, 23:39
Цитата Сообщение от parkito Посмотреть сообщение
А без массива это можно организовать?
можно.

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
#include <iostream>
#include <map>
#include <string>
 
using namespace std;
 
class My_enum
{
public:
    My_enum() : prev(-1) {}
    void add(const string& name, int value);
    void add(const string& name);
    int get_record(const string&) const;
    
    class Invalid
    {
    public:
        Invalid(const string& _s) : data(_s) {}
        const string& what() const { return data; }
    private:
        string data;
    };
 
private:
    std::map<string, int> database;
    int prev;
};
 
void My_enum::add(const string& name)
{
    ++prev;
    add(name, prev);
}
 
void My_enum::add(const string& name, int value)
{
    if (database.find(name) != database.end())
        throw My_enum::Invalid("Duplicate name");
    database[name] = value;
}
 
int My_enum::get_record(const string& name) const
{
    if (database.find(name) == database.end())
        throw Invalid("Unknown name of record");
    return database.at(name);
}
 
int main()
try
{
    My_enum temp;
    temp.add("abc");
    temp.add("b");
    temp.add("bcde", 52);
    cout << temp.get_record("abc") << " " << "bcde" << " " << temp.get_record("bcde") << endl;
}
catch(My_enum::Invalid& e)
{
    cout << "Error: " << e.what() << endl;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru