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

Ошибка передачи параметра в функцию

15.08.2014, 19:17. Показов 1090. Ответов 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
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
#include "stdafx.h"
#include "War.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    War warv("Battle");
    warv.addWarrior(Barracks::createWarrior("Archer",warv[0]),100);
    warv.LetTheWarBegin();
}
Выскакивает ошибка     error C2676: бинарный "[": "War" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору.
 
[size="1"][color="grey"][I]Добавлено через 47 секунд[/I][/color][/size]
#include "stdafx.h"
#include "Barracks.h"
 
Warrior* Barracks::createWarrior(char *type, Warrior &warr)
{
    if (!strcmp(type, "Archer"))
        return new Archer(
        const_cast<char*>(warr.getName()),
        warr.getHealth());
    if (!strcmp(type, "SwordMan"))
        return new SwordMan(
        const_cast<char*>(warr.getName()),
        warr.getHealth());
    if (!strcmp(type, "Magie"))
        return new Magie(
        const_cast<char*>(warr.getName()),
        warr.getHealth());
    return nullptr;
}
 
Barracks::Barracks()
{
}
 
 
Barracks::~Barracks()
{
}
 
[size="1"][color="grey"][I]Добавлено через 43 секунды[/I][/color][/size]
#include "stdafx.h"
#include "War.h"
 
 
War::War(char *nm)
{
    strcpy(name , nm);
    idgenerator = 0;
}
 
int War::generateId()
{
    return idgenerator ++;
}
void War::addWarrior (Warrior *join,int health)
{ 
    join->setId(generateId());
    arm1.push_back(join);
}
void War::add2Warrior (Warrior *join,int health)
{ 
    join->setId(generateId());
    arm2.push_back(join);
}
void War::LetTheWarBegin()
{
    int i=0,h=0,m;
    i=arm1.size();
    h=arm2.size();
    if(i<h)m=h;
    else if(i>h)m=i;
    else m=i;
    random_shuffle(arm1.begin(), arm1.end());
    random_shuffle(arm2.begin(), arm2.end());
    for(int u=0;u<m;u++)
    {
        for(int l=arm1[u]->health,b=arm2[u]->health,v=arm1[u]->damage,c=arm2[u]->damage;l>0,b>0;)
        {
            cout<<l-u;
        }
    }
}
War::~War(void)
{
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2014, 19:17
Ответы с готовыми решениями:

способы передачи объекта в функцию в качестве параметра
Подскажите способы передачи обьекта в функцию в качестве параметра, пожалуйста

Как привести тип параметра для передачи в функцию массивов
Господа! Помогите, пожалуйста!!! Никак не могу передать в функцию статический параметр-массив для его обработки. Пробовал так: ...

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

6
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
15.08.2014, 19:33
Цитата Сообщение от Dmitryxxxl Посмотреть сообщение
War warv("Battle");
warv.addWarrior(Barracks::createWarrior( "Archer",warv[0]),100);
а почему создаете одну перемнную warv а передаете ее в функцию как массив?
C++
1
2
War warv("Battle");
warv.addWarrior(Barracks::createWarrior("Archer",warv),100);
либо в классе War должен быть оператор []
0
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6
15.08.2014, 19:39  [ТС]
Если убрать скобки пишет:error C2664: Barracks::createWarrior: невозможно преобразовать параметр 2 из "War" в "Warrior &"
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
15.08.2014, 20:37
ну тогда наверно тут [] оператор доступа в классе war в котором есть массив класса Warrior.
на классы бы посмотреь вот на эти файлы War.h и Barracks.h
0
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6
15.08.2014, 20:42  [ТС]
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
#pragma once
#include "stdafx.h"
class War
{
    char name[40];
    vector<Warrior*>arm1;
    vector<Warrior*>arm2;
    int idgenerator;
public:
    War(char *nm);
    int generateId();
    void War::addWarrior (Warrior *warro,int health);
    void War::add2Warrior (Warrior *warro,int health);
    int getLength(){ return arm1.size(); }
    void LetTheWarBegin();
    ~War(void);
};
//---------------------------
#pragma once
class Barracks
{
public:
    static Warrior* createWarrior(char *type, Warrior &warr);
    Barracks();
    ~Barracks();
};
0
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
15.08.2014, 20:52
Цитата Сообщение от Dmitryxxxl Посмотреть сообщение
(char *type, Warrior &warr)
а War и Warrior это одно и то же?
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
15.08.2014, 21:03
ну тогда скорее всего отсутствует оператор доступa по индексу который возвращает Warrior &
из вектора arm1 или arm2
возможного чтото типа этого:
C++
1
Warrior& operator[]( int n ){ return arm1[n];}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2014, 21:03
Помогаю со студенческими работами здесь

В чем ошибка при передачи статического массива в функцию
Не кидайте камни за использование глобальных переменных и статических двумерных массивов. Вроде все делаю по науке, вот так: ...

Ошибка при передаче параметра в функцию
В ДЗ есть пример кода, помогите пожалуйста исправить, до работающего варианта (VS2015). Ошибки: (32) error C2660: strcpy_s: функция не...

Ошибка с преобразованием параметра для передачи по сокету
Доброго времени суток, уважаемые. Играюсь с сокетами. Зашел в тупик. Ругается на преобразование. #include &lt;sys/socket.h&gt; ...

Ошибка передачи параметра динамического массива из основной программы в процедуру
почему в 39 строке при вызове процедуры ошибка компиляции с комментом Error:Call by var for arg no.1 has to match exactly: Got...

Ошибка компиляции при попытке передачи переменной ссылочного типа в качестве параметра
Вечер добрый, форумчане. Вопрос в виде комментария написан в коде: namespace TestConsole { class Program { ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru