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

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

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

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

30.01.2014, 15:43. Просмотров 1016. Ответов 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

что делать???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:05     Variable or field 'fooo' declared void #2
fokse, А можно полностью код функции? и вы случайно не возвращаете какое либо значение из функции?
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:09  [ТС]     Variable or field 'fooo' declared void #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";
        }
    }
}
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
30.01.2014, 16:19     Variable or field 'fooo' declared void #4
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:21     Variable or field 'fooo' declared void #5
fokse, И функция принимает четыре параметра, а вы передаете 3.
И зачем вы пытаетесь передать итераторы?
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:27  [ТС]     Variable or field 'fooo' declared void #6
Цитата Сообщение от 0x10 Посмотреть сообщение
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
они сначала таковыми и были, но, при создании функции, программа выдаёт кучу ошибок.

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

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

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

Не по теме:

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

Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
30.01.2014, 16:54     Variable or field 'fooo' declared void #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)
Поправьте, если не права и так можно делать.
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:54  [ТС]     Variable or field 'fooo' declared void #12
ну да( я не знаю как сделать так, чтоб, объявляя в мэйне мап или вектор сделать их доступными функции
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
30.01.2014, 16:56     Variable or field 'fooo' declared void #13
Просто передайте их функции и всё.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 17:11     Variable or field 'fooo' declared void
Еще ссылки по теме:
C++ Что значит void(*f)()=(void(*)()func?
delete или new (typeid(void*))(void*) C++
C++ LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain
не получается передать массив из "void Vvod" в "void CalculatingEstimates" C++
C++ Ошибка '. has not been declared'

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

Или воспользуйтесь поиском по форуму:
fokse
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 17:11  [ТС]     Variable or field 'fooo' declared void #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 минуту
спасибо всем!!!
Yandex
Объявления
30.01.2014, 17:11     Variable or field 'fooo' declared void
Ответ Создать тему
Опции темы

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