Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72

Ошибка при сборке "ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]"

14.09.2017, 14:37. Показов 8525. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Пробую запустить код с этого сайта.

Сам код (пути до файлов указал свои)
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
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <algorithm>
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
int main()
{
    cv::Mat src = cv::imread("src.jpg", 1); // Инициализация изображения
    cv::Mat gray;
    cvtColor(src, gray, cv::COLOR_BGR2GRAY); // Перевод в чёрно-белое
    cv::CascadeClassifier cascadeSymbol; // Объявление каскада
    bool cascadeSymbolLoad = cascadeSymbol.load("haarcascade_russian_plate_number_symbol.xml"); // Загрузка каскада
 
    if(!cascadeSymbolLoad)
    {
        std::cerr << "Cascade not load. Check your directory \"haarcascade_russian_plate_number_symbol.xml\"" << std::endl;
        return false;
    }
    
    std::vector<cv::Rect> symbols;
    cascadeSymbol.detectMultiScale(gray, symbols); // Поиск с помощью каскада
    
    for(auto& p : symbols)
    {
        cv::Point symbolBegin   = cv::Point(p.x, p.y);
        cv::Point symbolEnd     = cv::Point(p.x+p.width, p.y+p.height);
        
        std::cout << "X: " << p.x << " Y: " << p.y << " Width: " << p.width << " Height: " << p.height << std::endl;
        
        
        rectangle(src, symbolBegin, symbolEnd, cv::Scalar(0,255,0), 2); 
    }
    
    cv::imshow("Test", src);
    
    cv::waitKey(0);
    
    return 0;
}
Но возникают ошибки.

Попытался разобраться сам:
ISO C++ forbids declaration of ‘p’ with no type [-fpermissive] - запрещено объявление переменной "р" без указания типа. Но в 31 строке же тип задается автоматически? (читал о auto здесь)

range-based ‘for’ loops are not allowed in C++98 mode нашел на этом же форуме но не понял что такое "профайл".

Прошу помочь!
Миниатюры
Ошибка при сборке "ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]"   Ошибка при сборке "ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]"  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2017, 14:37
Ответы с готовыми решениями:

C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]|
class TUID { public: char Data; TUID (); operator ++ (); };

Ошибка при компиляции: iso c++ forbids comparison between pointer and integer -fpermissive
помогите решить проблему. ошибка при компиляции &quot;error iso c++ forbids comparison between pointer and integer -fpermissive&quot; в строке...

ISO C++ forbids declaration of 'c' with no type
Компилятор выдает ошибку при выполнении данного кода, в чем ошибка? #include &lt;iostream&gt; using namespace std; template...

9
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
14.09.2017, 19:13  [ТС]
Благодарю, подключил, но не помогло(. А как быть с первой ошибкой?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.09.2017, 11:22
Что не помогло? Новые ошибки в студию.
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
15.09.2017, 14:04  [ТС]
Вновь выложу исправленный код, как комментарий - исходный код из примера.

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
52
53
54
55
56
57
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <algorithm>
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
int main()
{
    cv::Mat src = cv::imread("/home/pi/Desktop/Haar/Origin/G(1).jpg", 1); // Инициализация изображения
    cv::Mat gray;
    cvtColor(src, gray, cv::COLOR_BGR2GRAY); // Перевод в чёрно-белое
    cv::CascadeClassifier cascadeSymbol; // Объявление каскада
    bool cascadeSymbolLoad = cascadeSymbol.load("/home/pi/Desktop/Haar/Haarcascade/cascade.xml"); // Загрузка каскада
 
    if(!cascadeSymbolLoad)
    {
        std::cerr << "Cascade not load. Check your directory \"haarcascade_russian_plate_number_symbol.xml\"" << std::endl;
        return false;
    }
 
    std::vector<cv::Rect> symbols;
    cascadeSymbol.detectMultiScale(gray, symbols); // Поиск с помощью каскада
/*
    for (auto& p : symbols) //https://habrahabr.ru/post/206458/
    {
        cv::Point symbolBegin = cv::Point(p.x, p.y);
        cv::Point symbolEnd  = cv::Point(p.x+p.width, p.y+p.height);
 
        std::cout << "X: " << p.x << " Y: " << p.y << " Width: " << p.width << " Height: " << p.height << std::endl;
 
        rectangle(src, symbolBegin, symbolEnd, cv::Scalar(0,255,0), 2);
    }
*/
    foreach (auto& p , symbols) //https://habrahabr.ru/post/206458/
    {
        cv::Point symbolBegin = cv::Point(p.x, p.y);
        cv::Point symbolEnd  = cv::Point(p.x+p.width, p.y+p.height);
 
        std::cout << "X: " << p.x << " Y: " << p.y << " Width: " << p.width << " Height: " << p.height << std::endl;
 
        rectangle(src, symbolBegin, symbolEnd, cv::Scalar(0,255,0), 2);
    }
 
 
    cv::imshow("Test", src);
 
    cv::waitKey(0);
 
    return 0;
}
По ссылке из второго сообщения для Eclipse все подключил.
При компиляции выдает ошибку, см. на скриншоте 1.
Если собирать пример без исправлений (т.е. с тем что в /* */), то ошибки на скриншоте 2.
Миниатюры
Ошибка при сборке "ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]"   Ошибка при сборке "ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]"  
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.09.2017, 15:34
Зачем Вы заменили
C++
1
for(auto& p : symbols)
на

C++
1
foreach (auto& p , symbols)
? Замените обратно.
0
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
15.09.2017, 15:40  [ТС]
Тогда мы имеем то, что на втором скриншоте, там как раз видно эту строчку без изменений.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.09.2017, 15:53
Лучший ответ Сообщение было отмечено Lictor как решение

Решение

Попробуйте так
C++
1
2
3
4
for (int i = 0; i < symbols.size(); ++i)
{
      cv::Rect& p = symbols[i];
...
1
0 / 0 / 1
Регистрация: 20.07.2017
Сообщений: 72
15.09.2017, 16:12  [ТС]
Благодарю!
Код работает. Все таки для себя хотелось бы понять, а почему у меня не сработал код из примера? У автора же работал.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
15.09.2017, 16:26
потому что Вы не правильно воспользовались

Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2017, 16:26
Помогаю со студенческими работами здесь

ISO C++ forbids declaration of with no type
Здравстуйте! Недавно начал изучать С++. В коде возникла ошибка: Line 23| ISO C++ forbids declaration of 'roman' with no type. Подскажите,...

ISO C++ forbids declaration of 'main' with no type
Здравствуйте! Возникла ошибка в коде, никак не могу понять что где неправильно написал. Помогите кто может! Заранее благодарен! Задание...

error: ISO C++ forbids declaration of 'Time' with no type
#ifndef _TIMELL_H #define _TIMELL_H #include &lt;iostream&gt; #include &lt;string&gt; #include &quot;Time.h&quot; using namespace std; ...

При компиляции выскакивает ошибка "error: ISO C++ forbids comparison between pointer and integer [-fpermissive]"
Вот сама ошибка error: ISO C++ forbids comparison between pointer and integer 137 | if(temp3&lt;=mas.name &amp;&amp;...

Error: ISO C++ forbids declaration of "Link" with no type
выдает кучу ошибок, три основные: sorted_list.h:8: error: ISO C++ forbids declaration of ‘Link’ with no type sorted_list.h:8: error:...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru