Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
sdima75
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 27
08.05.2016, 10:49     Ошибка в книге extra qualification 'Critter::' on member 'operator=' #1
Есть книга - Майкл Доутсон "Изучаем С++ через программирование игр".
В книге есть код который не работает.
Код тестировался на 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();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2016, 10:49     Ошибка в книге extra qualification 'Critter::' on member 'operator='
Посмотрите здесь:

какая то ошибка в книге C++
указатели,вроде ошибка в книге C++
Ошибка в книге Шилдта? C++
Ошибка в листинге в книге C++
C++ Ошибка в книге или я что то не понимаю ?
C++ Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
Ошибка при подключении файла Sales_item.h из примера в книге C++
Ошибка в книге? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
08.05.2016, 11:06     Ошибка в книге extra qualification 'Critter::' on member 'operator=' #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
У меня в VS 2008 при компиляции и исполнении вашего кода ни единой ошибки и ни единого предупреждения.
Но можете убрать в этой строке Critter:: (он избыточен, т.к. и так объявление находится внутри пространства имен Critter):
C++
1
Critter& operator=(const Critter& c);
Кстати, Ваш компилятор это и предлагает:
Цитата Сообщение от sdima75 Посмотреть сообщение
extra qualification 'Critter::
sdima75
1 / 1 / 0
Регистрация: 12.09.2013
Сообщений: 27
08.05.2016, 11:28  [ТС]     Ошибка в книге extra qualification 'Critter::' on member 'operator=' #3
Спасибо! всё заработало!
Yandex
Объявления
08.05.2016, 11:28     Ошибка в книге extra qualification 'Critter::' on member 'operator='
Ответ Создать тему
Опции темы

Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru