Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Тер
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 32
1

При запуске в code::blocks появляются ошибки "<название> was not declared in this scope"

24.09.2017, 11:47. Просмотров 333. Ответов 6
Метки нет (Все метки)

Проект состоит из четырех файлов. Main.cpp, TestList.cpp, List.h, Sequence.h В последнем заголовочном файле и появляются все ошибки. При этом программа прекрасно работала на другом компьютере. В качестве примера привожу кусочек кода и изображение сообщения об ошибке. Помогите, пожалуйста, разобраться с этим.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef LIST_H
#define LIST_H
#include <stdexcept>
#include <cstdlib>
template<class T>
class ListNode {
private:
    ListNode<T>* Next_node;
    T Item;
public:
    ListNode(const T& new_item, ListNode<T>* new_next_node = nullptr) : Item(new_item), Next_node(new_next_node) {}
    ListNode<T>* GetNext() const { return Next_node; }
    T GetItem() const { return Item; }
    void SetNext(ListNode<T>* new_next_node) { Next_node = new_next_node; }
    void SetItem(const T& new_item) { Item = new_item; }
};
0
Миниатюры
При запуске в code::blocks появляются ошибки "<название> was not declared in this scope"  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2017, 11:47
Ответы с готовыми решениями:

Ошибка при создании класса библиотека: "'fflush' was not declared in this scope"
Доброго времени суток. Подскажите пожалуйста почему выдает ошибку? Вот...

'arr' was not declared in this scope 'sum' was not declared in this scope такие вот ошибки.(
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std;...

Ошибки при запуске code blocks
Здравствуйте, я установил Code blocks (галочки при установке не снимал, ничего...

Ошибки "Expression syntax" и "Unreachable code" при реализации класса матриц
Подскажите по коду. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include...

Code Blocks. Ошибка при компиляции "неправильный компилятор"
Помогите разобраться. Качал пару версий code block - создаю новый проект,...

6
DrOffset
8927 / 4808 / 1176
Регистрация: 30.01.2014
Сообщений: 7,843
24.09.2017, 12:01 2
Тер, Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17)
0
Тер
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 32
24.09.2017, 12:37  [ТС] 3
DrOffset, Сделала, как рекомендуется в статье, установила галочку на поддержку стандарта с++11. Из 17 ошибок осталось 15, причем две совершенно непонятные(в строках, выделенных цветом)

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
template<class T>
class ArraySequence : public Sequence<T> {
private:
    T* Arr;
    int Capacity;
public:
    ArraySequence() : Arr(nullptr), Capacity(0) {}
    ArraySequence(T* new_arr, int length);
    ~ArraySequence() { delete Arr; }
    [COLOR="darkorange"]T Get(int index) const override;[/COLOR]
    ArraySequence<T>& GetSubsequence(int start_index, int end_index) const override;
    void InsertAt(int index, const T& item) override;
    bool Remove(const T& item) override;
};
 
template<class T>
ArraySequence<T>::ArraySequence(T *new_arr, int length) {
    Length = length;
    Capacity = (length / 10 + 1) * 10;
    T* Arr = new T[Capacity];
    for (int i = 0; i < length; ++i)
        Arr[i] = new_arr[i];
}
 
template<class T>
[COLOR="darkorange"] ArraySequence<T>::Get(int index) const {[/COLOR]
    if (index < 0 || index >= Length)
        throw std::range_error("Index is out of range");
    return Arr[index];
}
Если не трудно, подскажите, пожалуйста, что делать дальше? Рекомендацию подключить стандарт с++14тоже пробовала, не помогло
0
Тер
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 32
24.09.2017, 12:43  [ТС] 4
Картинку не добавила. Вот эти ошибки появились вдобавок к остальным
0
Миниатюры
При запуске в code::blocks появляются ошибки "<название> was not declared in this scope"  
DrOffset
8927 / 4808 / 1176
Регистрация: 30.01.2014
Сообщений: 7,843
24.09.2017, 13:06 5
Тер, Вижу, что код портировался с VS. Там есть некоторые отклонения от стандарта, включенные по умолчанию. Из-за этого код не собирается.
Процитированная ошибка исправляется так:
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
template<class T>
class ArraySequence : public Sequence<T> {
private:
    T* Arr;
    int Capacity;
public:
    ArraySequence() : Arr(nullptr), Capacity(0) {}
    ArraySequence(T* new_arr, int length);
    ~ArraySequence() { delete[] Arr; } // !!
    T Get(int index) const override;
    ArraySequence<T>& GetSubsequence(int start_index, int end_index) const override;
    void InsertAt(int index, const T& item) override;
    bool Remove(const T& item) override;
};
 
template<class T>
ArraySequence<T>::ArraySequence(T *new_arr, int length) {
    this->Length = length; //!!
    Capacity = (length / 10 + 1) * 10;
    Arr = new T[Capacity]; //!!!
    for (int i = 0; i < length; ++i)
        Arr[i] = new_arr[i];
}
 
template<class T>
T ArraySequence<T>::Get(int index) const { //!!
    if (index < 0 || index >= this->Length) //!!
        throw std::range_error("Index is out of range");
    return Arr[index];
}
при условии, если я правильно предположил, что Length - это переменная базового класса.

Правда, в таком случае, тут есть грубые архитектурные ошибки. Но я не стану на них заострять внимание, пока мы не исправим ошибки компиляции
1
Тер
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 32
24.09.2017, 14:04  [ТС] 6
DrOffset,
Цитата Сообщение от DrOffset Посмотреть сообщение
Вижу, что код портировался с VS
значит, что изначально код создавался в Visual C?

Я пыталась исправить ошибки по Вашему совету. Получилось. Пытаюсь по подобию исправить остальное
0
GoshaM
84 / 79 / 32
Регистрация: 02.06.2016
Сообщений: 197
25.09.2017, 08:50 7
Цитата Сообщение от Тер Посмотреть сообщение
значит, что изначально код создавался в Visual C?
Не обязательно, code::blocks умеет работать с компилятором от Visual C++
0
25.09.2017, 08:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2017, 08:50

тестовая программа не компилируется = "error: 'mainfunc' was not declared in this scope|"
Решил ознакомится с Си, пишу простой код: #include &lt;iostream&gt; #include...

Как устранить ошибку "Was not declared in this scope"
Пытаюсь разобраться в с++. Не могу понять, как обойти ошибку Was not declared...

Не работает функция itoa(): "was not declared in this scope"
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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