Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 7

Std::map <string, class> ОШИБКА C2512

08.04.2014, 19:15. Показов 1694. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть следующий код:
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
#include <vector>
#include <map>
class Aluy
{
public:
    Aluy (int x, int y)
    {
        int z = x+y;
    }
};
 
class superAluy
{
public:
    
    std::map<String, Aluy> djigurda;
    superAluy()
    {};
    void lol (String name, int x, int y)
    {
        Aluy A(x,y);
        djigurda [name] = A; // ОШИБКА ТУТ
    }
};
 
int main ()
{
}
При попытке скомпилировать выдает ошибку "C2512: Aluy::Aluy: нет подходящего конструктора по умолчанию"
При удалении строки ( где комментарий), прога работает, но мне нужно чтобы в паре ключ - значение, значением был именно класс. Кто что скажет?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.04.2014, 19:15
Ответы с готовыми решениями:

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Std::unordered_multimap<std::string, int> map
Приветствую. Как можно получить только &quot;уникальный&quot; ключ в контейнере? std::unordered_multimap&lt;std::string, int&gt; map; ...

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

6
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
08.04.2014, 19:44
Лучший ответ Сообщение было отмечено ssAprillss как решение

Решение

C++
1
2
3
4
5
6
7
8
class Aluy
{
public:
    Aluy (int x=0, int y=0)
    {
        int z = x+y;
    }
};
Добавлено через 5 минут
Компилируется вот такой код:
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
#include <vector>
#include <map>
#include <string>
using namespace std;
class Aluy
{
public:
    Aluy (int x=0, int y=0)
    {
        int z = x+y;
    }
};
class superAluy
{
public:
    
    std::map<string, Aluy> djigurda;
    superAluy()
    {};
    void lol (string name, int x, int y)
    {
        Aluy A(x,y);
        djigurda [name] = A; // ОШИБКА ТУТ
    }
};
 
int main ()
{
       superAluy SS;
       string a("text");
       SS.lol(a,0,1);
}
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 7
08.04.2014, 19:52  [ТС]
Спасибо, с этим примером помогло, а если вот с таким? Тут еще библиотека sfml подключена.


Это сам конструктор:
C++
1
Animation(Texture &t, int x=0, int y=0, int w=0, int h=0, int count=0, float Speed=0, int step=0)
Что делать с текстурой? Подскажите пожалуйста.

Здесь аналогичная ошибка: "error C2512: Animation::Animation: нет подходящего конструктора по умолчанию"
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
08.04.2014, 20:33
map при использовании квадратных скобок пытается создавать новый объект класса (при условии, что ключ новый, но компилятору-то всё равно: он же компилирует обе ветки). Создаёт "молча", чтобы при чтении квадратными скобками из несуществующего ключа подставлялся объект по умолчанию. Если у класса нет конструктора по умолчанию (который можно вызывать без параметров), то при использовании квадратных скобок возникает ошибка. Использование методов insert (а лучше, если доступно, emplace) и find поможет избежать такой неприятности.
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 7
08.04.2014, 23:08  [ТС]
Немножко недопонимаю

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class AnimationManager
{
    public:
        String currentAim;
        std::map<String, Animation> animList;
 
        AnimationManager()
        {};
        
            void create(String name, Texture &t, int x, int y, int w, int h, int count, float Speed, int step)
            {
                
                    animList [name] = Animation ( t, x, y, w, h, count, Speed, step);
            currentAim = name;
            }
Вот у меня есть такой класс, конструктор Animation я описал(сообщение выше) как теперь воспользоваться insert? А то у меня одни ошибки получаются.
0
13 / 9 / 5
Регистрация: 30.01.2014
Сообщений: 47
08.04.2014, 23:39
insert в мапу можно таким образом
C++
1
2
3
4
5
6
7
8
9
typedef string key_type;
typedef int value_type;
   
 
   std::map<key_type,value_type> m;
   m.insert(std::make_pair("first",1)); // простой способ
 
   std::pair<key_type,value_type> p("second", 2); // второй способ
   m.insert(p);
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 7
09.04.2014, 15:24  [ТС]
Ребят, пробовал через insert, он все равно жалуется на то, что нет конструктора по умолчанию. Если инициализировать значения в конструкторе, то все ок, но как инициализировать Texture &t?

Добавлено через 1 час 50 минут
Тема закрыта, огромное спасибо zss и Nick Alte.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2014, 15:24
Помогаю со студенческими работами здесь

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Emplace в std::map. Как добавить элемент в std::map без копирования?
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...

Std::map или string внутри класса?
Как эффективней хранить экземпляры класса, что бы потом находить нужный? В связки std::map или задавать отдельное поле с имением или ID...

Заголовочный файл для std::map<string,int>
Добрый вечер. Назрел такой вопрос. Про написании программы телефонная книга не понимаю, какие методы нужно писать в хэдер файл, если у нас...

Куда будет указывать указатель в std::map<string,pointer *>?
Чисто теоретически,хотелось бы узнать у знатоков C++ Допустим есть некий контейнер std::map&lt;const string, someClass *&gt; container...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru