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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 5.00
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 18:28     Недопустимые локальные определения функций #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
#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, через '::'. Но он ругается че то
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 18:28     Недопустимые локальные определения функций
Посмотрите здесь:

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

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

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

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

return что-нибудь;
using namespace std; это я использую, просто сюда не внес. return тоже подписал, толку нет
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.09.2010, 18:52     Недопустимые локальные определения функций #6
в конце функции: return 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();
 
 
}
Но вот "Годовой обьем продажи пишет большое отрицательное число", это с чем связано?
Chainyk
 Аватар для Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94
27.09.2010, 19:13     Недопустимые локальные определения функций #8
2488000000 не помещаеться в int - в знаковий розряд попала единица. Используй другой тип
TheMachinist
 Аватар для 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 спасибо
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
27.09.2010, 19:24  [ТС]     Недопустимые локальные определения функций #10
Спасибо, отблагодарить я успею. Добившись нормально компиляции)))
Все равно обло((
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
27.09.2010, 19:29     Недопустимые локальные определения функций #11
В суровые времена DOS и Borland TurboC , int действительно имел диапазон от -32768 до 32767, ибо занимал 2 байта. Но уже довольно давно он расширен до 4 байтов и имеет тот же диапазон, что и long - плюс-минус 2 миллиарда с копейками. Так что в данном случае и long не поможет, нужно использовать либо вещественные числа, либо 64-разрядное целое.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2010, 20:08     Недопустимые локальные определения функций
Еще ссылки по теме:

main: недопустимые локальные определения функций C++
C++ Ошибки в игре: недопустимые локальные определения функций
C++ Error C2601: main: недопустимые локальные определения функций

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

Или воспользуйтесь поиском по форуму:
Chainyk
 Аватар для 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
Yandex
Объявления
27.09.2010, 20:08     Недопустимые локальные определения функций
Ответ Создать тему
Опции темы

Текущее время: 18:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru