7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
1

Ошибка преобразования типа вектора

09.10.2019, 08:05. Показов 1317. Ответов 8
Метки нет (Все метки)

Приветствую!

Есть двумерный вектор экземпляров класса Mob, в заголовочнике.
C++
1
2
3
4
vector<vector<Mob> > m = {
    {Mobsv1(2000, 500, 100, 74, 50, 50,50, 120, 150),
    Mobsv2(1866, 400, 100, 74, 50, 50, 50, 120, 150)}
};
Классы Mobsv1 и Mobsv2 наследуются от одного класса Mob, в заголовочнике.
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
#pragma once
 
using namespace sf;
 
class Mob
{
protected:
         //поля
public:
    Mob(/*Поля 1*/)     //Конструктор 
    {
        
        
    }
 
       void Get_SpriteM();
};
class Mobsv1 :public Mob {
public:
    
    Mobsv1(/* Поля 1*/) :Mob(/*Поля 1, только без типов, через ',' */) {
        //тело
            
    }
 
};
class Mobsv2 :public Mob {
public:
 
    Mobsv2(/* Поля 1*/) :Mob(/*Поля 1, только без типов, через ',' */) {
        //тело
    }
 
 
};
Функция в main, пробегаем по вектору и вызываем функцию.

C++
1
zal(window,m,1);                                      //СТРОКА 97

Объявление и определения
C++
1
2
3
4
5
6
7
void zal(RenderWindow & window, vector<vector<Mob>>m, int currentMap) //СТРОКА 67
{
    for (int i = 0; i < m[currentMap].size(); i++)
    {
        window.draw(m[currentMap][i].Get_SpriteM());            //СТРОКА 71
    }
}
ОшибкиОшибки
Ошибка C2664 "void zal(sf::RenderWindow &,float,std::vector<int,std::allocator<_Ty>>,int)": невозможно преобразовать аргумент 3 из "std::vector<std::vector<Mob,std::allocator<_Ty>>,std::alloc ator<std::vector<_Ty,std::allocator<_Ty>>>>" в "std::vector<int,std::allocator<_Ty>>" 97
Ошибка C2109 для индекса требуется массив или указатель 71
Ошибка C3203 "vector": неспециализированный класс шаблон нельзя использовать в качестве аргумента шаблон для параметра шаблон "_Ty", требуется действительный тип 67
Ошибка C3203 "allocator": неспециализированный класс шаблон нельзя использовать в качестве аргумента шаблон для параметра шаблон "_Alloc", требуется действительный тип 67
Ошибка C2903 allocator: символ не является ни классом шаблон, ни функцией шаблон 67
Ошибка C2923 std::vector: "Mob" не является допустимым аргументом типа шаблон для параметра "_Ty" 67
Ошибка C2065 Mob: необъявленный идентификатор 67
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2019, 08:05
Ответы с готовыми решениями:

Ошибка преобразования типа
Задача состояла в следующем: реализация алгоритма проверки n на простоту, используя малую теорему...

Ошибка преобразования типа в классе
Дан класс, который реализует длинную арифметику с положительными\отрицательными целыми числами. Все...

Ошибка преобразования: значение типа "float *" нельзя присвоить сущности типа "float"
Помогите исправить.Значение типа &quot;float *&quot; нельзя присвоить сущности типа float void Mode2() {...

Запись информации из вектора типа string в вектор типа double
Как записать только числа , которые хранятся в векторе типа стринг, в вектор типа дабл, в векторе...

8
"C with Classes"
1539 / 1328 / 500
Регистрация: 16.08.2014
Сообщений: 5,546
Записей в блоге: 1
09.10.2019, 08:30 2
Цитата Сообщение от Battary Посмотреть сообщение
Ошибка C2664 "void zal(sf::RenderWindow &,float,std::vector<int,std::allocator<_Ty>>,int)": невозможно преобразовать аргумент 3 из "std::vector<std::vector<Mob,std::allocator<_Ty>>,std::alloc ator<std::vector<_Ty,std::allocator<_Ty>>>>" в "std::vector<int,std::allocator<_Ty>>" 97
эта ошибка у тебя не от этого zal(window,m,1); вызова функции, ты ее не перегружал? почему у тебя параметр вектора на 3 месте?

Добавлено через 5 минут
Battary, если ты хочешь работать с объектами через один общий класс, тебе будет удобней сделать базовый класс Mob интерфейсом.
0
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
09.10.2019, 08:36  [ТС] 3
Абсолютно точно не перегружена. Параметр вектора на 3 месте, там функция в оригинале с int, но не нужным.
C++
1
2
3
4
5
6
7
void zal(RenderWindow & window,int sec, vector<vector<Mob>>m, int currentMap) //СТРОКА 67
{
    for (int i = 0; i < m[currentMap].size(); i++)
    {
        window.draw(m[currentMap][i].Get_SpriteM());            //СТРОКА 71
    }
}
И вызов соответственно:
C++
1
zal(window, seconds, m,1);
Ничего seconds не привносит, просто плохо написано там.
0
"C with Classes"
1539 / 1328 / 500
Регистрация: 16.08.2014
Сообщений: 5,546
Записей в блоге: 1
09.10.2019, 08:38 4
Цитата Сообщение от Battary Посмотреть сообщение
Параметр вектора на 3 месте, там функция в оригинале с int, но не нужным.
значит вызывать нужно так:
C++
1
zal(window, 0, m,1);
пропускать нельзя.
0
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
09.10.2019, 08:39  [ТС] 5
Да это не имеет значения, ошибка где-то с векторами.
Почему то компилятор пытается преобразовать размерность вектора.
0
"C with Classes"
1539 / 1328 / 500
Регистрация: 16.08.2014
Сообщений: 5,546
Записей в блоге: 1
09.10.2019, 08:43 6
Цитата Сообщение от Battary Посмотреть сообщение
Да это не имеет значения, ошибка где-то с векторами.
перепиши вызов как я тебе показал и скинь ошибки.
0
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
09.10.2019, 08:47  [ТС] 7
Абсолютно то же самое. Понемногу разобрались, конструкция правильная, ошибка где-то в классовой модели. Проблема с конструкторами, они шалят.
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
09.10.2019, 09:18 8
Battary, что абсолютно все тоже самое?
Что вы сделали? Что тоже самое?)
Выкладывайте ваш код с последними изменениями, весь.
И ошибки заново перекопируйте сюда, чем быстрее сделаете тем быстрее вам помогут.
Список ошибок чтобы не мозолил глаз, можно под спойлер засунуть
1
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
09.10.2019, 10:28  [ТС] 9
Все, ошибку нашли, один из кодеров забыл прикрепить заголовочник.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2019, 10:28
Помогаю со студенческими работами здесь

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

Оператор преобразования типа в классах
Допустим, есть три класса: //Фигура class figure; //Дамка class king { public: ...

Оператор преобразования типа в char*
Всем привет! Вот у меня есть готовый код для класса Complex #include &lt;iostream&gt; #include...

Преобразования массива с типа int к типу char
Помогите решить задачу. Требуется создать шаблон класса для преобразования массива с типа int к...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru