Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделение памяти для динамического двумерного массива внутри функции https://www.cyberforum.ru/ cpp-beginners/ thread2026397.html
Имеется вот такой код : #include <iostream> void allocateMemory(int ***array, int size); void freeMemory(int **array, int size); int main() { int **matrix{ nullptr }; constexpr int size{ 10 }; allocateMemory(&matrix, size);
Упаковка задачи C++
Здравствуйте! Подскажите, каким образом можно упаковать некоторый алгоритм, чтобы сделать его через некоторое время. Например, некоторое время накапливается контейнер (Queue например) с задачами, а затем некоторый TaskController последовательно выполняет их или же распараллеливает в несколько потоков. Нашел варианты с std::future. Насколько это быстрый вариант? PS: Для опыта пытаюсь...
C++ C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что? https://www.cyberforum.ru/ cpp-beginners/ thread2026369.html
Доброго времени суток, не понимаю до конца деление С++ - выражений (приложение 1). Lvalue вроде просто - всё, от чего можно брать адрес. А вот разницу между xvalue и prvalue до конца не понял, как определить, что есть что? Как следующий код из lvalue делает xvalue и почему это xvalue, а не prvalue? #include <iostream> class Widget { public: Widget() = default; Widget(const Widget&...
C++ Как вывести месяц, день, год с нулем впереди, 04, 03, если число без десятка https://www.cyberforum.ru/ cpp-beginners/ thread2026355.html
Здравствуйте. Решаю задачы простые, нужно вывести месяц, день, год в формате 12/30/09. Я написал условие if, чтобы добавлять ноль спереди, если число без десятка, но он не выводится? Почему? Если я ввел 3, 4 и 5, мне нужно чтобы так 03/04/05. Надеюсь вы поняли. Спасибо #include <iostream>
C++ Строки Фибоначчи
Здравствуйте, уважаемые форумчане! Решил взяться за более сложную задачу на строки, но столкнулся с проблемой, с которой никогда раньше не сталкивался. При сдаче - во многих тестах - ошибка выполнения (что скорее всего связано с утечкой памяти). Прошу всех, кто разбирается помочь в исправлении ошибки. Можно ли данную задачу (см. мой код ниже) решать в лоб и какие исправления нужно внести в...
C++ Работа с массивом в функции https://www.cyberforum.ru/ cpp-beginners/ thread2026291.html
Не получается заставить функцию работать с определенным массивом. На выходе требуется, в зависимости от содержимого выбранной ячейки(n), номера двух других(b1, b2). Компилятор выдает нули. Другие методы адаптировать не вышло. Ошибка явно по невнимательности. Не судите строго новичка. #include<stdio.h> #include<math.h> #include<iostream> #include <time.h> using namespace std; void iter(int...
C++ Найти количество знаков пунктуации в ведённом пользователем тексте Решил я написать прогу, где я буду вводить слова и мне будет выдавать количество знаков пунктуации, но что-то пошло не так( Насколько я понимаю, в ошибке говорится, что cin не было объявлено или что-то вроде этого... #include <stdio.h> #include <conio.h> #include <cctype> #include <iostream> main() { char a; https://www.cyberforum.ru/ cpp-beginners/ thread2026284.html Установить иконку на exe файл (С++ | Empty CLR) MVS 2017 C++
В общем из названия всё понятно... Как установить иконку на проект(ехе файл)? Точнее где это в настройках?
C++ При конвертировании из LPCSTR в std::string возвращаются иероглифы Есть dll в которой определены функции конвертирования типов данных. Всё работает, за ислючением функции, возвращающих LP что-то там. В частности интересует std_string_TO_LPCSTR: //dub1401.h #pragma once #include <string> #include <Windows.h> #ifdef FROMDLL #define DECLSPEC _declspec(dllexport) #else https://www.cyberforum.ru/ cpp-beginners/ thread2026202.html C++ Наследование конструктора Есть структура, нужно создать объект этого класса, но конструктор доступен только наследникам этого класса: Каким образом можно создать объект этого класса? Необходим наследник? struct Foo { void say() const { std::cout << "Foo says: " << msg << "\n"; } protected: Foo(const char *msg) : msg(msg) { } private: const char *msg; }; https://www.cyberforum.ru/ cpp-beginners/ thread2026198.html
C++ Сортировка структуры по алфавиту
Здравствуйте, написал прогу, но с сортировкой не получается, и извините, что там все криво-косо.В чем ошибка(и)? #include <cstdlib> #include <clocale> #include <iostream> #include <cstring> #include <sstream> #include <string> using namespace std;
C++ Ссылка на переменную после std::move https://www.cyberforum.ru/ cpp-beginners/ thread2026177.html
Можно ли пользоваться ссылкой на переменной после того как она была перемещена, как например здесь: struct _Thread { std::thread Thread; std::atomic<bool> StopFlag; };
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
0

Ошибка: map не является шаблоном - C++ - Ответ 10679781

11.08.2017, 09:20. Показов 14188. Ответов 2
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравия всем!

Решил облегчить себе использование WinAPI при помощи метода, предложенного на хабрахабре.

Было несколько ошибок, все, что мог я исправил, вот исходный код, и ошибки написаны рядом с кодом в комментах КАПСОМ:

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <windows.h>
#include <TCHAR.h>
 
//Класс нашего приложения
class CApp
{
public:
    //Функция запуска нашего приложения
    //содержит в себе цикл сообщений
    void Run()
    {
        MSG msg;
        while (GetMessage(&msg, 0, 0, 0) != 0)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
};
 
//Класс простого окна
class CWnd
{
public:
    //Тип указателя на функцию
    typedef LRESULT(CWnd::*FuncPointer)(LPARAM, WPARAM);
 
    //Структура указателя на функцию-обработчик
    struct POINTER
    {
        CWnd* wnd;//Указатель на класс, которому принадлежит обработчик
        FuncPointer func;
    };
 
    HWND _hwnd;//Хендл нашего окна
    map<UINT, POINTER> _msgmap;// map НЕ ЯВЛЯЕТСЯ ШАБЛОНОМ
    
    //Функция создания окна
    bool Create(
        HWND parent,//Родительское окно, если 0 - то главное окно
        LPCWSTR text,//Заголовок окна
        DWORD exstyle, DWORD style,//Стили окна
        int x, int y, int w, int h,//Размеры и положение
        UINT id//Идентификатор окна
    )
    {
        //Регистрируем класс окна
        WNDCLASSEX wndc;
        wndc.lpszClassName = L"MyWnd";
        wndc.cbSize = sizeof(WNDCLASSEX);
        wndc.lpfnWndProc = WNDPROC(_WndProc);//Оконная процедура
        wndc.cbClsExtra = 0;
        wndc.cbWndExtra = 0;
        wndc.hbrBackground = HBRUSH(COLOR_WINDOW);//Цвет фона окна
        wndc.hInstance = GetModuleHandle(0);//Хендл приложения
        wndc.hCursor = LoadCursor(0, IDC_ARROW);//Загружаем старндартный курсор
        wndc.style = CS_HREDRAW | CS_VREDRAW;
        wndc.hIcon = 0;
        wndc.hIconSm = 0;
        wndc.lpszMenuName = 0;
        RegisterClassEx(&wndc);
 
        //Создаем само окно
        _hwnd = CreateWindowEx(exstyle, L"MyWnd", text,
            style | WS_CLIPCHILDREN,//Стиль WS_CLIPCHILDREN нужен для того, чтобы дочерние контролы не мигали при перерисовке
            x, y, w, h, parent, HMENU(id),
            GetModuleHandle(0),
            this//Передаем в оконную функцию указатель на класс нашего окна
        );
 
        if (!_hwnd) return false;
        return true;
    }
    //Оконная функция
    //функция в которую поступают сообщения для обработки
    static LRESULT CALLBACK _WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
        CWnd *wnd = 0;
        //Сообщения WM_NCCREATE приходит до WM_CREATE
        //т.е при создании окна
        if (message == WM_NCCREATE)
        {
            //Получаем указатель на экземпляр нашего окна, который мы передали в функцию CreateWindowEx
            wnd = (CWnd*)LPCREATESTRUCT(lparam)->lpCreateParams;
            //И сохраняем в поле GWL_USERDATA
            SetWindowLong(hwnd, GWL_USERDATA, LONG(LPCREATESTRUCT(lparam)->lpCreateParams));
            wnd->_hwnd = hwnd;
        }
        //Теперь получаем указатель на наш экземлпяр окна, но уже из поля GWL_USERDATA
        wnd = (CWnd*)GetWindowLong(hwnd, GWL_USERDATA);
        if (wnd)
        {
            //Ищем сообщение в карте
            map<UINT, POINTER>::iterator it;  // ИДЕНТИФИКАТОР "map" НЕ ОПРЕДЕЛЁН
            it = wnd->_msgmap.find(message);  // ИДЕНТИФИКАТОР "it" НЕ ОПРЕДЕЛЁН
 
            //Если сообщение не найдено, то обрабатываем его по умолчанию
            if (it == wnd->_msgmap.end()) return DefWindowProc(hwnd, message, wparam, lparam);
            else
            {
                POINTER msg = it->second;
                //Вызываем функцию обработчик        
                LRESULT result = (msg.wnd->*msg.func)(lparam, wparam);
                if (result) return result;
            }
        }
        return DefWindowProc(hwnd, message, wparam, lparam);
    }
};
 
//Функкция добавления сообщения в карту
//Приводит указатель на функцию-член класса T к указателю на функцию-член CWnd 
template<typename T>
bool AddMessage(UINT message, CWnd* wnd, LRESULT(T::*funcpointer)(LPARAM, WPARAM))
{
    if (!wnd || !funcpointer) return false;
 
    POINTER msg;
    msg.wnd = wnd;
    msg.func = reinterpret_cast<FuncPointer>(funcpointer);
 
    _msgmap.insert(pair<UINT, POINTER>(message, msg));
 
    return true;
}
 
//Наследуем класс нового окна от CWnd
class CMyWnd : public CWnd
{
public:
    CMyWnd()
    {
        //Добавляем обработчики сообщений WM_CREATE и WM_DESTROY
        AddMessage(WM_CREATE, this, &CMyWnd::OnCreate);
        AddMessage(WM_DESTROY, this, &CMyWnd::OnDestroy);
    }
    LRESULT OnCreate(LPARAM lparam, WPARAM wparam)
    {
        MessageBox(0, _T("HelloHabr!"), _T(""), 0);
        return 0;
    }
    LRESULT OnDestroy(LPARAM lparam, WPARAM wparam)
    {
        PostQuitMessage(0);
        return 0;
    }
};
 
int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE prev, LPSTR cmd, int showcmd)
{
    //Создаем наше окно
    CMyWnd *wnd = new CMyWnd;
    wnd->Create(0, L"HelloHabr!", 0, WS_OVERLAPPEDWINDOW | WS_VISIBLE, 300, 300, 500, 400, 0);
 
    //Запускаем приложение
    CApp *app = new CApp;
    app->Run();
    return 0;
}
В 36 строке жалуется на то, что map - это не шаблон, а в строках 95 - 96 не находит переменных.

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

Что как исправить, чтоб Васька не ругался?

Вернуться к обсуждению:
Ошибка: map не является шаблоном C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2017, 09:20
Готовые ответы и решения:

Ошибка: map не является членом std::
Добрый день. Делаю файл-&gt;проект-&gt; создать новый проект -&gt; простой проект на С++. это в qt creator 5.5 код, который не компилит : ...

Ошибка с шаблоном
Собсно,только начал изучать шаблоны,кажется,что-то упустил,ну в общем вот: #include &lt;iostream&gt; using namespace std; ...

Использование определенного типа в шаблоном классе, где параметром шаблона является <?>
Привет! Плохо знаю Java, поэтому не могу написать следующее: есть такие классы abstract AbstractClass &lt;T&gt; { ...

2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.08.2017, 09:20
Помогаю со студенческими работами здесь

PhpWord: в чём ошибка при работе с шаблоном?
Нужно создавать документы по шаблону. Если создавать документ на пустом месте, всё проходит нормально, но тут не происходит ни сохранения...

Ошибка с map контейнером
Всем привет , может кто подсказать, что я делаю не правильно ? Вылезает ошибка , чтобы я ни делал . Пытаюсь рекурсивно переходить на...

Обращение к элементам vector, который находится в map, находящийся в map
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map...

Поместить вектора в map и реализовать перегрузку вывода для map
Всем привет! Нужна помощь в написании программы. У меня есть вот такая прога и мне нужно каким-то образом поместить вектора в map и...

Ошибка в работе плагина WP DS Blog Map
после установки WP DS Blog Map, на странице карты выходит ошибка Warning: array_search() : Wrong datatype for second argument in...

0
Новые блоги и статьи
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru