Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
1

Variable or field 'fooo' declared void

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

Author24 — интернет-сервис помощи студентам
пишу программу-конвентер.
сначала в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2014, 15:43
Ответы с готовыми решениями:

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

Указатель на функцию в параметрах функции, почему variable or field ‘function_name’ declared void
почему error: variable or field ‘traverse’ declared void ? что я делаю не так #include...

Ошибка variable or fields 'OutVivod' declared void
Ошибка в строке 10: variable or fields 'OutVivod' declared void. 37:...

Список с дробями: Variable or field 'input' declared void 'pd' was not declared in this scope
почему не нравится 1ая функция? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; struct rational_fraction...

13
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:05 2
fokse, А можно полностью код функции? и вы случайно не возвращаете какое либо значение из функции?
0
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
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
30.01.2014, 16:19 4
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
0
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
30.01.2014, 16:21 5
fokse, И функция принимает четыре параметра, а вы передаете 3.
И зачем вы пытаетесь передать итераторы?
0
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:27  [ТС] 6
Цитата Сообщение от 0x10 Посмотреть сообщение
fokse, При вызове функции тип возвращаемого значения не пишется.
Объявили кучу глобальных переменных, зачем-то передаете... ужс. Сделайте все переменные локальными.
они сначала таковыми и были, но, при создании функции, программа выдаёт кучу ошибок.

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

Добавлено через 58 секунд
Цитата Сообщение от fokse Посмотреть сообщение
а как же ещё делать-то??
Итераторы явно используются только в функции fooo, там им и место, а никак не в глобальном пространстве.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
30.01.2014, 16:36 8
Может это и не повлияет, но у Вас функция объявлена после её вызова. Возможно в этом проблема.
И при вызове функции fooo не нужно писать void.
0
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
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
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
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 65
30.01.2014, 16:54  [ТС] 12
ну да( я не знаю как сделать так, чтоб, объявляя в мэйне мап или вектор сделать их доступными функции
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
30.01.2014, 16:56 13
Просто передайте их функции и всё.
0
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
30.01.2014, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2014, 17:11
Помогаю со студенческими работами здесь

Как устранить ошибку variable or field declared void
Значит, сидел я тут, решал лабы, и вдруг... как говорится На моменте описания функции probel...

Как исправить ошибку cannot use local variable txt before is declared?
Как исправит ошибку cannot use local variable txt before is declared? И при каких обстоятельствах...

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

Возникает ошибка Error 1 A local variable named 'c' cannot be declared in this scope because it would give a different m
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru