Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
1

"E2090: Qualifier 'Date0' is not a class or namespace name" и "E2040: Declaration terminated incorrectly"

29.05.2015, 14:00. Показов 4586. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста,в чем ошибка?
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit3.h"
 
using namespace std;
 
int main()
{
 Date0 birth(7,24,1949);
 Date0 hire(3,12,1988);
 Employee manager("Bob","Blue",birth,hire);
 
 cout << endl;
 manager.print();
 
 cout << "\nTest Date constructor with invalid values:\n";
 Date0 lastDayOff(14,35,1994); // недействительный день и месяц
 cout << endl;
 cout << endl;
 system("pause");
 return 0;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
// конструктор подтверждает действительность месяца; вызывает вспомогательную
// функцию checkDay для подтверждения значения дня
Date0::Date0(int mn,int dy,int yr)
{
 if(mn>0&&mn<=12)
  month=mn;
 else
 {
   month=1;
   cout << "Invalid month ("<< mn << ") set to 1.\n";
 }
 year=yr;  // можно было бы проверить год
 day=checkDay(dy); // проверить день
 
 // вывести объект Date0, чтобы обозначить вызов деструктора
 cout << "Date0 object constuctor for date ";
 print();
 cout << endl;
}
// напечатать объект Date0 в формате mm/dd/yyyy
void Date0::print() const
{
 cout << month << '/' << day << '/' << year;
}
// вывести объект Date0, чтобы обозначить вызов деструктора
Date0::~Date0()
{
 cout << "Date0 object destructor for date ";
 print();
 cout << endl;
}
// вспомогательная функция для подтверждения действительности дня для данных
// месяца и года (обрабатывает високосные годы)
int Date0::checkDay(int testDay) const
{
 static const int daysPerMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 // определить действительность testDay для указанного месяца
 if(testDay>0&&testDay<=daysPerMonth[month])
  return testDay;
 // проверить 29 февраля для високосного года
 if(month==2&&testDay==29&&(year%400==0||(year%4==0&&year%100!=0)))
  return testDay;
 
 cout << "Invalid day (" << testDay << ") set to 1.\n";
  return 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
//------------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
 
#ifndef Unit2H
#define Unit2H
 
class Date0
{
 public:
   Date0(int =1, int =1, int = 1900); // конструктор по умолчанию
   void print() const; // напечатать дату в формате месяц/день/год
   ~Date0(); // предусмотрен для подтверждения порядка деструкции
 private:
   int month;
   int day;
   int year;
   // вспомогательная функция для проверки допустимости дня месяца
   int checkDay(int) const;
};
#endif
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
#include "Unit3.h"
 
using namespace std;
 
// Конструктор использует список инициализаторов, чтобы передать
// значения конструкторам элементов-объектов birthDate0 и hireDate0
// ЗАМЕЧАНИЕ: здесь вызывается "конструктор копии по умолчанию",
// неявно генерируемый компилятором С++
 
Employee::Employee(const char* const first,const char* const last,
                   const Date0 &dateOfBirth,const Date0 &dateOfHire)
 :birthDate0(dateOfBirth), hireDate0(dateOfHire) // инициализировать birthDate0
                                                //  и hireDate0
{
 // копировать first в FirstName; убедиться, что строка поместится
 int length=strlen(first);
 length=(length<25 ? length : 24);
 strncpy(firstName,first,length);
 firstName[length]='\0';
 
 // копировать last в lastName; убедиться, что строка поместится
 length=strlen(last);
 length=(length<25 ? length : 24);
 strncpy(lastName,last,length);
 lastName[length]='\0';
 
 // вывести объект Employee, чтобы обозначить вызов конструктора
 cout << "Employee object constructor: " << firstName << ' ' << lastName << endl;
}
// напечатать объект Employee
void Employee::print() const
{
 cout << lastName << ", " << firstName << " Hired: ";
 hireDate0.print();
 cout << " Birthday: ";
 birthDate0.print();
 cout << endl;
}
// вывести объект Employee, чтобы обозначить вызов деструктора
Employee::~Employee()
{
 cout << "Employee object destructor: " << lastName << ", " << firstName << endl;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
#ifndef Unit3H
#define Unit3H
 
class Employee
{
 public:
   Employee(const char* const, const char* const, const Date0 &, const Date0 &);
   void print() const;
   ~Employee(); // предусмотрен для подтверждения порядка деструкции
 private:
   char firstName[25];
   char lastName[25];
   const Date0 birthDate0; // композиция: элемент-объект
   const Date0 hireDate0; // композиция: элемет-объект
};
//---------------------------------------------------------------------------
#endif
Выдаёт -
[C++ Error] Unit2.cpp(12): E2090 Qualifier 'Date0' is not a class or namespace name
[C++ Error] Unit2.cpp(12): E2040 Declaration terminated incorrectly

Что не так?

Добавлено через 1 час 16 минут
Причем еще какая-та неведомая фигня - если удалить допустим библиотеку любую с файла Unit2.cpp, например #include <iomanip>, начинает сыпать кучу ошибок не понятных:
[C++ Error] Unit3.h(15): E2293 ) expected
[C++ Error] Unit3.h(17): E2321 Declaration does not specify a tag or an identifier
[C++ Error] Unit3.h(21): E2139 Declaration missing ;
[C++ Error] Unit3.h(22): E2238 Multiple declaration for 'Employee::Date0'
[C++ Error] Unit3.h(21): E2344 Earlier declaration of 'Employee::Date0'
[C++ Error] Unit3.h(22): E2139 Declaration missing ;
[C++ Error] Unit3.h(23): E2232 Constant member 'Employee::Date0' in class without constructors
[C++ Error] Unit3.h(23): E2232 Constant member 'Employee::Date0' in class without constructors
[C++ Error] Unit3.cpp(17): E2293 ) expected

По книге проверил,все на месте. Ну подскажите пожалуйста,где ошибка :(

Добавлено через 51 минуту
Запустилась. Ничего не понимаю...Как так получается,я взял инклуды в Unit2.cpp изменил на
C++
1
2
3
#include <iostream.h>
#include <cstdlib.h>
#include <iomanip.h>
Т.е. добавил *.h - и все запустилось. Тут же беру убираю снова все *.h , делая как было раньше и оно опять запустилось. Это что за глюки у билдера такие?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2015, 14:00
Ответы с готовыми решениями:

E2040 Declaration terminated incorrectly
Делал прогу по очередям по книги Дейтелов, но билдер выдаёт ошибку List.h(15): E2040 Declaration...

Ошибка E2040 Declaration terminated incorrectly
//--------------------------------------------------------------------------- #include &lt;clx.h&gt;...

[C++] Unit1.cpp(20): E2040 Declaration terminated incorrectly
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

[C++ Error] kurscpp.cpp(4): E2040 Declaration terminated incorrectly
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop extern &quot;C&quot; _stdcall DATE(char *, char...

4
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
29.05.2015, 14:53 2
Цитата Сообщение от System16v Посмотреть сообщение
Это что за глюки у билдера такие?
Лицензионного билдера ?
0
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
29.05.2015, 15:49  [ТС] 3
Почтальен, Нет конечно
0
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
29.05.2015, 16:10 4
Ну как бы различия есть в том, как писать хедер, с .h или без, может правда глюк
0
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
29.05.2015, 16:17  [ТС] 5
Почтальен, ну что просто удивило(взбесило), что потом же я опять тут же убираю .h и оно прекрасно запустилось. А до этого кричал на эти ошибки,всегда писал без .h, первый раз такое,обычно все запускалось нормально.
0
29.05.2015, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2015, 16:17
Помогаю со студенческими работами здесь

Исправить ошибку в коде: E2040 Declaration terminated incorrectly
Ошибка указывает на первую строку, не могу понять Unit2.cpp(160): E2040 Declaration terminated...

[C++ Error] Lib.cpp(18): E2040 Declaration terminated incorrectly
Доброго времени суток. Пытаюсь компильнуть прогу. Lib.cpp(18): E2040 Declaration terminated...

[BCC32 Error] Zfzlib.hpp(116): E2040 Declaration terminated incorrectly
Доброго всем времени суток! При Build проекта появляется ошибка Zfzlib.hpp(116): E2040...

Структура Octal. Выдает ошибку E2040 Declaration terminated incorrectly. Не пойму в чем проблема?
#include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; struct Octal {char*s;int len;} ...

Класс в dll. E2090 Qualifier 'sampleClass' is not a class or namespace
Пытаюсь собрать dll, содержащую в себе класс. Компилятор считает, что имя класса - это не имя...

Ошибка [C++ Error] Unit1.cpp(11): E2090 Qualifier 'MyClass' is not a class or namespace name
Выдает ошибку Unit1.cpp(11): E2090 Qualifier 'MyClass' is not a class or namespace name ...


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

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