Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sdima75
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 27
#1

Ошибка в книге extra qualification 'Critter::' on member 'operator=' - C++

08.05.2016, 10:49. Просмотров 245. Ответов 2
Метки нет (Все метки)

Есть книга - Майкл Доутсон "Изучаем С++ через программирование игр".
В книге есть код который не работает.
Код тестировался на code::blocks и Qt creator (код не работает).
Код скаченный непосредственно с сайта, точно такой же как в книге.
Сам код (ошибка в 15 строке - C:\(путь до папки)\09\main.cpp|15|error: extra qualification 'Critter::' on member 'operator=' [-fpermissive]|)
Гугл не помог решить проблему.

Буду благодарен за Вашу помощь!

P.S. Помните что это раздел "Для начинающих", поэтому давайте без оскорблений и "поверхностных ответов".

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
98
99
100
101
102
103
104
//Heap Data Member
//Demonstrates an object with a dynamically allocated data member
 
#include <iostream>
#include <string>
 
using namespace std;
 
class Critter
{
public: 
    Critter(const string& name = "", int age = 0);  
    ~Critter();                   //destructor prototype   
    Critter(const Critter& c);    //copy constructor prototype
    Critter& Critter::operator=(const Critter& c);  //overloaded assignment op   <- ОШИБКА!
    void Greet() const; 
 
private:
    string* m_pName;
    int m_Age;
};
 
Critter::Critter(const string& name, int age)
{
    cout << "Constructor called\n";
    m_pName = new string(name);
    m_Age = age;  
}
 
Critter::~Critter()                        //destructor definition
{
    cout << "Destructor called\n";
    delete m_pName;
}
 
Critter::Critter(const Critter& c)        //copy constructor definition
{
    cout << "Copy Constructor called\n";
    m_pName = new string(*(c.m_pName));
    m_Age = c.m_Age;
}
 
Critter& Critter::operator=(const Critter& c)  //overloaded assignment op def
{
    cout << "Overloaded Assignment Operator called\n";
    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 << "I'm " << *m_pName << " and I'm " << m_Age << " years old. ";
     cout << "&m_pName: " << &m_pName << endl;
}
 
void testDestructor();
void testCopyConstructor(Critter aCopy);
void testAssignmentOp();
 
int main()
{
    testDestructor();
    cout << endl;
    
    Critter crit("Poochie", 5);
    crit.Greet();
    testCopyConstructor(crit);
    crit.Greet();
    cout << endl;
    
    testAssignmentOp();
 
    return 0;
}
 
void testDestructor()
{
    Critter toDestroy("Rover", 3);
    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("crit", 11);
    crit3 = crit3;
    crit3.Greet();
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2016, 10:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в книге extra qualification 'Critter::' on member 'operator=' (C++):

В чем причина ошибки extra qualification - C++
Видает ошибку extra qualification 'RyadokIdentifier::' on member 'Lowercase' в чем причина #include &lt;iostream&gt; #include &lt;string&gt; ...

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" - C++
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include &lt;iostream&gt; ...

'operator =' must be a non-static member - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; template &lt;class T&gt; class BinaryMinHeap { public: BinaryMinHeap()...

Ошибка Extra parameter in call to cos(double) - C++
Помогите, пожалуйста!!! Выбивает ошибку &quot;Extra parameter in call to cos(double)&quot; в этом блоке кода: double fun2(double x,double y) { ...

Ошибка invalid use of member - C++
Вот код. if (variety == a1.seta cout &lt;&lt; a1.seta; else cout &lt;&lt; &quot;This sort is not.Try again.&quot; &lt;&lt; endl; В ошибке показывает...

Ошибка request for member 'x' in - C++
Здравствуйте,почему не работает код: #include &lt;iostream&gt; #include &lt;queue&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace...

2
zss
Модератор
Эксперт С++
6517 / 6079 / 2001
Регистрация: 18.12.2011
Сообщений: 15,812
Завершенные тесты: 1
08.05.2016, 11:06 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
У меня в VS 2008 при компиляции и исполнении вашего кода ни единой ошибки и ни единого предупреждения.
Но можете убрать в этой строке Critter:: (он избыточен, т.к. и так объявление находится внутри пространства имен Critter):
C++
1
Critter& operator=(const Critter& c);
Кстати, Ваш компилятор это и предлагает:
Цитата Сообщение от sdima75 Посмотреть сообщение
extra qualification 'Critter::
1
sdima75
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 27
08.05.2016, 11:28  [ТС] #3
Спасибо! всё заработало!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2016, 11:28
Привет! Вот еще темы с ответами:

Ошибка: cannot call member function - C++
Доброе время суток ребят такая фигня, решил значит наконец то классы освоить но прям беда! чой то не пойму h файл #ifndef MCT_H ...

Ошибка: invalid use of non-static member function - C++
#include &lt;iostream&gt; using namespace std; class fraction { fraction(double var_sum) {

Ошибка - Reference member 'example::link' is not initialized - C++
class example { example(); private: unsigned char count; public: unsigned char &amp;link; }; example::example()

Ошибка при компиляции (.is not a member of std) - C++
При компиляции возникают следующие ошибки: wcerr/wostringstream is not a member of std В чем причина и как это исправить? Сбит с...


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

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

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