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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
#1

Variable or field 'fooo' declared void - C++

30.01.2014, 15:43. Просмотров 1091. Ответов 13
Метки нет (Все метки)

пишу программу-конвентер.
сначала в map записываются значения.
потом, с помощью функции fooo при выборе 1 мы записываем этот map в соответствующие вектора и печатаем их, а при выборе 2 - из векторов записываем в другой map (ну, суть, в общем то не меняется) и тоже печатаем его.
без функции всё работало прекрасно, но по заданию надо именно с ОДНОЙ функцией конвертирования, так сказать.

C++
1
2
3
4
void fooo(map<int,string>,vector<string>,vector<int>,int k)
{
...
}
выдаёт ошибку
variable or field 'fooo' declared void

что делать???
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 15:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Variable or field 'fooo' declared void (C++):

Variable or field 'set_color' declared void - C++
написал прог из книги вчём проблема ? #include &lt;iostream&gt; #include &lt;msoftcon.h&gt; #include &lt;math.h&gt; void draw_circle(int ,int ,int...

Ошибка variable or fields 'OutVivod' declared void - C++
Ошибка в строке 10: variable or fields 'OutVivod' declared void. 37: 'OutVivod' was not declared in this scope...

Static function 'void leave(char *)' declared but not defined - C++
скорее всего у меня ошибка с инклюдами и хедер файлами вроде нагугил глобальные переменные через экстерн а как статические функции в хедер...

Ошибка "variable-size type declared outside of any function" - C++
#include &lt;iostream&gt; using namespace std; int N,K,M; void vvod(int N,int A,int I); // &lt;--- void proverka(int J,int M,int A1); ...

'arr' was not declared in this scope 'sum' was not declared in this scope такие вот ошибки.( - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main () { setlocale(LC_ALL, &quot;rus&quot;); ...

Дважды вычислить значение выражения, используя функции возвращающие void и не void - C++
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:05 #2
fokse, А можно полностью код функции? и вы случайно не возвращаете какое либо значение из функции?
0
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:09  [ТС] #3
Цитата Сообщение от cooller_94 Посмотреть сообщение
fokse, А можно полностью код функции? и вы случайно не возвращаете какое либо значение из функции?
нет, вроде не возвращаю. это ж void
вот
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
#include <map>
#include <vector>
#include <iostream>
 
using namespace std;
 
typedef map<int,string>::value_type val;
typedef map<string,int>::value_type val2;
map<int,string>maps;
map<string,int>maps2;
vector<int>ivec;
vector<string>svec;
vector<int>::iterator iv;
vector<string>::iterator sv;
map<int,string>::iterator it;
map<string,int>::iterator it2;
 
int main()
{
    maps.insert(val(1,"aa"));
    maps.insert(val(2,"bb"));
    maps.insert(val(3,"cc"));
    void fooo(maps,sv,iv);
 
}
void fooo(map<int,string>,vector<string>,vector<int>,int k)
{
    cout<<"Enter: ";
    cin>>k;
    if(k==1)//мап в вектора
    {
        for(it=maps.begin();it!=maps.end();it++)
        {
            cout<<(*it).first<<"  "<<(*it).second<<"\n";
            ivec.push_back((*it).first);
            svec.push_back((*it).second);
        }
    }
    else if(k==2)//вектора в мап
    {
        for(iv=ivec.begin(),sv=svec.begin();iv<ivec.end(),sv<svec.end();iv++,sv++)
         {   cout<<*iv<<endl;
             cout<<*sv<<endl;
             maps2.insert(val2(*sv,*iv));
        }
        for(it2=maps2.begin();it2!=maps2.end();it2++)
        {
            cout<<(*it2).first<<"  "<<(*it2).second<<"\n";
        }
    }
}
0
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
30.01.2014, 16:19 #4
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:21 #5
fokse, И функция принимает четыре параметра, а вы передаете 3.
И зачем вы пытаетесь передать итераторы?
0
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:27  [ТС] #6
Цитата Сообщение от 0x10 Посмотреть сообщение
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
они сначала таковыми и были, но, при создании функции, программа выдаёт кучу ошибок.

Добавлено через 2 минуты
Цитата Сообщение от cooller_94 Посмотреть сообщение
fokse, И функция принимает четыре параметра, а вы передаете 3.
И зачем вы пытаетесь передать итераторы?
с параметрами исправила всё.
в смысле?
а как же ещё делать-то??
0
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
30.01.2014, 16:28 #7
Цитата Сообщение от fokse Посмотреть сообщение
они сначала таковыми и были, но, при создании функции, программа выдаёт кучу ошибок.
Пишите аккуратно и исправляйте причины ошибок, а не лепите костыли.
Начать можно с именования переменных. Лично по мне следить за тем, где должна быть map1, а где map2 банально лень.

Добавлено через 58 секунд
Цитата Сообщение от fokse Посмотреть сообщение
а как же ещё делать-то??
Итераторы явно используются только в функции fooo, там им и место, а никак не в глобальном пространстве.
0
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,978
Записей в блоге: 27
30.01.2014, 16:36 #8
Может это и не повлияет, но у Вас функция объявлена после её вызова. Возможно в этом проблема.
И при вызове функции fooo не нужно писать void.
0
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:50  [ТС] #9
Цитата Сообщение от Тамика Посмотреть сообщение
Может это и не повлияет, но у Вас функция объявлена после её вызова. Возможно в этом проблема.
И при вызове функции fooo не нужно писать void.
учла все ваши подсказки, спасибо, ошибок не пишется)
но программа теперь не совсем правильно работает и, при вводе значения 1 она перестаёт работать.

вот так доработала саму функцию:
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
void fooo(map<int,string>,vector<string>,vector<int>)
{
    map<int,string>::iterator it;
    vector<int>::iterator iv;
    vector<string>::iterator sv;
    map<string,int>::iterator it2;
    cout<<"Enter: ";
    int k;
    cin>>k;
    if(k==1)//мап в вектора
    {
        for(it=maps.begin();it!=maps.end();it++)
        {
//            cout<<(*it).first<<"  "<<(*it).second<<"\n";
            ivec.push_back((*it).first);
            svec.push_back((*it).second);
               cout<<*iv<<endl;
                cout<<*sv<<endl;
        }
    }
    else if(k==2)//вектора в мап
    {
        for(iv=ivec.begin(),sv=svec.begin();iv<ivec.end(),sv<svec.end();iv++,sv++)
         {   cout<<*iv<<endl;
             cout<<*sv<<endl;
             maps2.insert(val2(*sv,*iv));
        }
        for(it2=maps2.begin();it2!=maps2.end();it2++)
        {
            cout<<(*it2).first<<"  "<<(*it2).second<<"\n";
        }
    }
}
Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
Пишите аккуратно и исправляйте причины ошибок, а не лепите костыли.


Итераторы явно используются только в функции fooo, там им и место, а никак не в глобальном пространстве.

ох, извините, этого я не заметила, перепутала)
fooo(maps,ivec,svec)

что такое костыли?
0
0x10
30.01.2014, 16:50
  #10

Не по теме:

Даже по неполному коду вижу, что глобальные мапы остались =_=

0
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,978
Записей в блоге: 27
30.01.2014, 16:54 #11
Еще один вопрос... Не могу понять. Может так можно, но Вы в функцию передаете параметры, а в объявлении я вижу только типы данных. Но не вижу переменных, в которые должны прийти значения.
C++
1
void fooo(map<int,string>,vector<string>,vector<int>)
Вы принимате вектора, мапы. Куда? Хотя бы так:
C++
1
void fooo(map<int,string> arg1, vector<string> arg2, vector<int> arg3)
Поправьте, если не права и так можно делать.
0
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:54  [ТС] #12
ну да( я не знаю как сделать так, чтоб, объявляя в мэйне мап или вектор сделать их доступными функции
0
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,978
Записей в блоге: 27
30.01.2014, 16:56 #13
Просто передайте их функции и всё.
0
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 17:11  [ТС] #14
Цитата Сообщение от Тамика Посмотреть сообщение
Еще один вопрос... Не могу понять. Может так можно, но Вы в функцию передаете параметры, а в объявлении я вижу только типы данных. Но не вижу переменных, в которые должны прийти значения.
C++
1
void fooo(map<int,string>,vector<string>,vector<int>)
Вы принимате вектора, мапы. Куда? Хотя бы так:
C++
1
void fooo(map<int,string> arg1, vector<string> arg2, vector<int> arg3)
Поправьте, если не права и так можно делать.
правы правы.

Добавлено через 13 минут
Цитата Сообщение от Тамика Посмотреть сообщение
Просто передайте их функции и всё.
всё передала, спасибо

Добавлено через 1 минуту
спасибо всем!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 17:11
Привет! Вот еще темы с ответами:

Typedef void (WINAPI *GLEND)(void), как вызывать? - C++
импортирую метод GLEND glmethod = (GLEND) GetProcAddress(hModule, &quot;glEnd&quot;); как его теперь коректно вызвать: typedef void...

Что значит void(*f)()=(void(*)()func? - C++
void(*f)()=(void(*)())func; Объясните, пожалуйста, что значит этот код.

delete или new (typeid(void*))(void*) - C++
Доброе время суток. Пишу список. Телом каждого элемента (el) списка является void указатель(body). (предполагается что тело элемента...

Error C2084: функция "void mehanizm:print(void)" уже имеет текст реализации - C++
Добрый день, я столкнулся с проблемой вывода элемента на экран, выбивает: &quot;error C2084: функция &quot;void mehanizm::print(void)&quot; уже имеет...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.01.2014, 17:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru