Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 25.06.2017
Сообщений: 9
1

Ошибка "Использование полного имени в объявлении члена не допускается"

09.02.2020, 21:25. Показов 7110. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, почему в 14 строке кода ошибка "Использование полного имени в объявлении члена не допускается". Читаю книгу Douson M. Изучаем С++ через программирование игр 2016. В 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Демонстрация поведения объекта, имеющего член данных,
// память для которого выделяется динамически
 
#include <iostream>
#include <string>
 
using namespace std;
 
class Critter {
public:
    Critter(const string &name = "", int age = 0);
    ~Critter(); // прототип деструктора
    Critter(const Critter &c); // прототип конструктора копирования
    Critter &Critter::operator = (const Critter &c); // перегруженная операция присваивания
    void Greet() const;
private:
    string *m_pName;
    int m_Age;
};
 
Critter::Critter(const string &name, int age) {
    cout << "Вызываем конструктор" << endl;
    m_pName = new string(name);
    m_Age = age;
}
 
Critter::~Critter() { // определение деструктора
    cout << "Вызываем деструктор" << endl;
    delete m_pName;
}
 
Critter::Critter(const Critter &c) { // определение конструктора копирования
    cout << "Вызываем конструктор копирования" << endl;
    m_pName = new string(*(c.m_pName));
    m_Age = c.m_Age;
}
 
Critter &Critter::operator = (const Critter &c) { // определение перегруженной операции присваивания
    cout << "Вызываем перегруженную операцию присваивания" << endl;
    if (this != &c) {
        delete m_pName;
        m_pName = new string(*(c.m_pName));
        m_Age = c.m_Age;
    }
 
    return *this;
}
 
void Critter::Greet() const {
    cout << "Меня зовут " << *m_pName << "и мне " << m_Age << " лет." << endl;
    cout << "&m_pName: " << &m_pName << endl;
}
 
void testDestructor();
void testCopyConstructor(Critter aCopy);
void testAssignmentOp();
 
int main() {
 
    setlocale(LC_ALL, "RUS");
 
    testDestructor();
    cout << endl;
 
    Critter crit("Максим", 25);
    crit.Greet();
 
    testCopyConstructor(crit);
    crit.Greet();
    cout << endl;
 
    testAssignmentOp();
 
    return 0;
}
 
void testDestructor() {
    Critter toDestroy("Маша", 23);
    toDestroy.Greet();
}
 
void testCopyConstructor(Critter aCopy) {
    aCopy.Greet();
}
 
void testAssignmentOp() {
    Critter crit1("crit1", 7);
    Critter crit2("crit2", 9);
    crit1 = crit2;
    crit1.Greet();
    crit2.Greet();
    cout << endl;
 
    Critter crit3("crit3", 11);
    crit3 = crit3;
    crit3.Greet();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2020, 21:25
Ответы с готовыми решениями:

Использование полного имени в объявлении члена не допускается
Доброго времени суток! Решаю задачи по конструированию простейших классов. При объявлении класса...

Использование полного имени в объявлении члена не допускается
Делаю курсовой проект во ВинАпи, возникла проблема в данном отрывке кода. Копирывал из источника, в...

Использование полного имени в объявлении члена не допускается E0427
class CBaseHandle { public: __forceinline CBaseHandle( ) { m_Index = INVALID_EHANDLE_INDEX;...

исправить ошибку использование полного имени в объявлении члена не допускается в обьявлении всех методов Get
Помогите исправить ошибку использование полного имени в объявлении члена не допускается в...

Класс "Матрица": использование полного имени в объявлении члена не допускается
Создал программу по образцу. выдает ошибку #include &lt;iomanip&gt; #include &lt;iostream&gt; using...

3
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
09.02.2020, 21:30 2
Лучший ответ Сообщение было отмечено Monstih как решение

Решение

C++
1
Critter& operator = (const Critter &c);
1
1 / 1 / 0
Регистрация: 25.06.2017
Сообщений: 9
09.02.2020, 21:41  [ТС] 3
Привет. Спасибо! Все перечитал еще раз, стало понятно.
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
09.02.2020, 21:43 4
Компилятор ругается на полное имя в объявлении члена:
Critter:: должно использоваться только вне объявления класса, внутри класса не нужно. В строке 38, где идет определение операции присваивание, нужно полное имя, чтобы компилятор знал, что это функция-член. Внутри объявления класса это не нужно
1
09.02.2020, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2020, 21:43
Помогаю со студенческими работами здесь

Нахождение ошибки "использование полного имени в объявлении члена не допускается"
#include &quot;stdafx.h&quot; #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;iostream&gt; #include...

error C2886: std::cout: использование символа в "using"-объявлении члена не допускается
подскажите плз что ето может бить...если не подключаю файл Nokia.h тогда всьо норм.. #include...

Ошибка engine.h (использование полного имени в объявлении члена не допускается)
Всем привет ! Прошу помочь с кодом. При описаний класс и публичных переменных столкнулся с...

Ошибка - использование имени типа не допускается
Ошибка в строках где есть float. И в строке 18 textBox1-&gt;Text Помогите пожалуйста, никак не пойму,...

Ошибка "использование списка аргументов шаблона в объявлении основного шаблона не допускается"
Я где-то видел подобную класс template&lt;typename T&gt; class sml&lt;4, T&gt; {...} Но когда я пытаюсь...


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

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