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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 5.00
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
#1

Недопустимые локальные определения функций - C++

27.09.2010, 18:28. Просмотров 7265. Ответов 11
Метки нет (Все метки)

Вот почитал еще немного литературы и решил попробовать написать прогу.
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
#include <iostream> 
#include <string.h>
#include <iostream>
 
int main(){
    setlocale(LC_ALL,"Russian");
 
    class Subd{
    private:
        char name[255];
        int kol;
        int god;
        float ryn;
    public:
        int setSubd(char*,int, int, int);
        void show_Subd();
    };
 
    int Subd::setSubd(char *name,int kol,int god,int ryn){
         strcpy(name, "Oracle");
         kol=1;
         god=2488000000;
         ryn=31.1;
    }
    void Subd::show_Subd(){
        cout << "Название фирмы: " << name << endl; 
        cout << "Количество продуктов: " << kol<< endl; 
        cout << "Годовой объем продажи ($): " << god << endl;
        cout << "Часть рынка (%): " << ryn << endl;
    }
}
Но ругается:
error C2601: main::Subd::setSubd: недопустимые локальные определения функций
error C2601: main::Subd::show_Subd: недопустимые локальные определения функций

Что это может значит?

Добавлено через 12 минут
Цитата Сообщение от Chainyk Посмотреть сообщение
Класс, ето новый тип:
C++
1
2
3
4
5
6
7
8
class A
{
int i;
}
void main ()
{
A a;
}
Сейчас а - екземпляр класса А и т.д.
Почитайте Либерти, Джонс "Освой самостоятельно С++ за 21 день", книга очень доходчива
Это я понял

Добавлено через 2 минуты
я же вроди типо обращаюсь к функции, которая лежит в классе Subd, через '::'. Но он ругается че то
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 18:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Недопустимые локальные определения функций (C++):

main: недопустимые локальные определения функций - C++
помогите исправить ошибки в case 3 #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;locale&gt; #include &lt;stdio.h&gt; #include &lt;iomanip&gt; ...

Ошибки в игре: недопустимые локальные определения функций - C++
#include &lt;iostream&gt; //Содержит потоки ввода/вывода std::cin и std::cout и все для работы с ними #include &lt;stdlib.h&gt; //Содержит функции...

Error C2601: main: недопустимые локальные определения функций - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int dieroll (){ int chance=0; srand (time(NULL)); ...

Исследовать область определения функций и построить их графики - C++
РАБОТА С ГРАФИКОЙ ВОТ ЗАДАЧА: Исследовать область определения функций и построить их графики для произвольных значений параметров на...

перегрузку функций,определения максимального значения элемента массива разного типа - C++
Задание: Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа. Хотелось...

Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа - C++
Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.09.2010, 18:28 #2
Кто же создает классы внутри main()?
0
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 18:29  [ТС] #3
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Кто же создает классы внутри main()?
Ой, че то не подумал
Вытащил за main, все равно тоже самое((
0
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.09.2010, 18:37 #4
используй : using namespace std;

и проследи чтобы функции(те что не void) возвращали какое-нибудь значение

return что-нибудь;
0
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 18:42  [ТС] #5
Цитата Сообщение от NikolaWhite Посмотреть сообщение
используй : using namespace std;

и проследи чтобы функции(те что не void) возвращали какое-нибудь значение

return что-нибудь;
using namespace std; это я использую, просто сюда не внес. return тоже подписал, толку нет
0
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.09.2010, 18:52 #6
в конце функции: return 0; или что ты хочешь чтоб она возвращала.....
у меня твой код ошибок не выдает
0
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 19:03  [ТС] #7
А я нашел свои ошибки и все вот изменил

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
#include <iostream> 
#include <string.h>
#include <iostream>
using namespace std;
 
class Subd{
    private:
        char name[255];
        int kol;
        int god;
        float ryn;
    public:
        int setSubd(char*,int, int, int);
        void show_Subd();
    };
 
int Subd::setSubd(char *emp_name,int emp_kol,int emp_god,int emp_ryn){
         strcpy(name, "emp_name");
         kol=emp_kol;
         god=emp_god;
         ryn=emp_ryn;
         return 0;
    }
 
void Subd::show_Subd(){
        cout << "Название фирмы: " << name << endl; 
        cout << "Количество продуктов: " << kol<< endl; 
        cout << "Годовой объем продажи ($): " << god << endl;
        cout << "Часть рынка (%): " << ryn << endl;
    }
 
int main(){
    setlocale(LC_ALL,"Russian");
 
     Subd worker;
     worker.setSubd("Oracle",1,2488000000,31.1);
     worker.show_Subd();
 
 
}
Но вот "Годовой обьем продажи пишет большое отрицательное число", это с чем связано?
0
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
27.09.2010, 19:13 #8
2488000000 не помещаеться в int - в знаковий розряд попала единица. Используй другой тип
1
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.09.2010, 19:18 #9
Число,которое ты передаешь в качестве параметра превышает int
используй

private:
long god;

вместо
int god;

int имеет диапазон от -35 с чем то тысяч до 35 с чем то, а long на миллиарды счет
Ознакомься с типами данных
И не забывай благодарить тех кто тебе помогает +1 спасибо
1
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 19:24  [ТС] #10
Спасибо, отблагодарить я успею. Добившись нормально компиляции)))
Все равно обло((
0
Nick Alte
Эксперт С++
1638 / 1010 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
27.09.2010, 19:29 #11
В суровые времена DOS и Borland TurboC , int действительно имел диапазон от -32768 до 32767, ибо занимал 2 байта. Но уже довольно давно он расширен до 4 байтов и имеет тот же диапазон, что и long - плюс-минус 2 миллиарда с копейками. Так что в данном случае и long не поможет, нужно использовать либо вещественные числа, либо 64-разрядное целое.
1
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
27.09.2010, 20:08 #12
Цитата Сообщение от NikolaWhite Посмотреть сообщение
nt имеет диапазон от -35 с чем то тысяч до 35 с чем то, а long на миллиарды счет
Ознакомься с типами данных
Ето было правдой на процессорах до 386. Уже в 386-м int имел 32 розряда. В большынстве компиляторов long тоже 4 байта. Используй float или double
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2010, 20:08
Привет! Вот еще темы с ответами:

Массив: Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа - C++
Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа

Локальные переменные - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; // по объявлению библиотек сразу видно компилятор старый такчто ветераны с++ помогите ...

С++ ООП локальные переменные - C++
Есть розмерность для матрицы n i m, если я ввожу их в функции create, то уже функция print их не видит.я понимаю что они локальные, как же...

Неинициализированные локальные переменные - C++
Меня интересует как обходить данные ошибки. В чем соль ошибок? Проблема даже не в том что они есть, а то что компилятор останавливается и...


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

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

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