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

Ошибка подчеркивает this. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чем ссылка отличается от указателя? http://www.cyberforum.ru/cpp-beginners/thread895730.html
чем ссылка отличается от указателя?
C++ Как переделать с public на private и создать методы для закрытых полей? Очень простой вопрос , но я только сегодня начал учить классы и возник такой вопрос - Как переделать с public на private и создать методы для закрытых полей? Расскажите поподробней пожалуйста #include <iostream> #include <string> using namespace std; class Human { public: http://www.cyberforum.ru/cpp-beginners/thread895728.html
Visual c++. Проблемы с отладкой C++
Здравствуйте. Почему при отладке студия иногда показывает не все локальные переменные? Например, при отладке в 10-ой студии следующей функции в окне "Локальные" не отображаются указатели s1, s2, vor_s1, vor_s2, splitChain. Voronoi::Voronoi(TriagActorsT &s) { #pragma region Trivial cases //ends of recursion, trivial cases if (s.size() < 1) { throw -1;
Действие с файлом в зависимости от его типа C++
В общем препод сказал написать программу к понедельнику, мол напишешь - поставлю зачет :D Суть программы с его слов: "Я задаю любой путь к файлу, если этот .txt файл, на экране должно появиться сообщение "Это текстовый файл, открывается с помощью Блокнота", если это .jpeg файл, на экране должно появиться сообщение "Это графический файл, открывается с помощью Photoshop'a", если это .mp3 файл, на...
C++ Потоки и их влияние на скорость http://www.cyberforum.ru/cpp-beginners/thread895709.html
Есть необходимость использовать несколько потоков, которые будут в цикле обрабатывать значения. Как будет быстрее, разбить задачу на несколько частей и каждую поместить в поток (получится примерно 10 потоков) или запихнуть в каждый побольше и получить меньше (5 потоков)? Вопрос не в прямой скорости, а в том, как будет лучше для процессора обрабатывать? Как лучше для общей производительности...
C++ getline(cin, ); Программа создаёт текстовый документ в который записывает название, автора и кол-во проданных экземпляров книги. Вот только возникла проблема:( Записывается вся информация, кроме названия. Не могу понять в чём проблема. Не подскажете?:) #include "stdafx.h" #include <iostream> #include <string> #include <fstream> using namespace std; struct bookst { string name,autor; подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
09.06.2013, 04:25     Ошибка подчеркивает this.
Копался, копался в вашем коде, пытаясь его хотя бы заставить скомпилится, да плюнул на все это дело.

Советую разобраться в том, как работают классы, я не могу до конца понять что вы хотите сделать: то ли ошиблись при описании методов, то ли пытаетесь изменить свойства класса с помощью внешних функций.
Вот пример как все должно быть:
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
    public:
        A() : a(0) {}
        A(int x) : a(x) {}
        int getA() const { return a; }
        void setA(const int x) { a = x; }
 
    private:
        int a;
};
Конечно, объявление и реализацию лучше разделить, тут совмещено лишь для краткости.

Цитата Сообщение от Ibook Посмотреть сообщение
if(this->director!=delete[] this->director;
что это значит?

Цитата Сообщение от Ibook Посмотреть сообщение
this->title new char [size+1];
что это значит?

Цитата Сообщение от Ibook Посмотреть сообщение
void SetStartDate(MyDate StartDate){
return this->SetStartDate;
}
что это значит?

Забудьте про char*, напишите все для char[100] или std::string, для вас работа с памятью будет весьма и весьма нетривиальной

По моему самый верный ответ тут:
Цитата Сообщение от Kastaneda Посмотреть сообщение
Советую нажать ctrl+A, а потом del.
вам явно не хватает понимания того, что необходимо делать. Почитайте книги, посмотрите как это в принципе делается. Прикрепляю пример:
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// <<<<<<<<<<-------------- описание класса Newspaper ---------------->>>>>>>>>>
class Newspaper
{
    public:
        // конструкторы
        Newspaper();                                    // по-умолчанию
        Newspaper(const char*, const char*, const int); // аргументированный
        Newspaper(const Newspaper &);                   // копий
        Newspaper& operator= (const Newspaper &);       // оператор присваиваний
        ~Newspaper();                                   // деструктор
 
        // set-методы
        void setName(const char *);
        void setPublisher(const char *);
        void setEdition(const int);
 
        // get-методы
        char* getName() const;
        char* getPublisher() const;
        int   getEdition() const;
 
        void print() const; // вывод объекта на экран
 
    protected:
        void init(const char *, const char *, const int); // создание объекта
        void clear(); // очистка памяти
 
        char *name;      // название
        char *publisher; // издатель
        int edition;     // тираж
};
 
// перегружаем операторы для работы потоков ввода/вывода с объектами Newspaper
ostream& operator<< (ostream &, const Newspaper &); // вывод
istream& operator>> (istream &, Newspaper &);       // ввод
 
// <<<<<<<<<<------------- реализация класса Newspaper --------------->>>>>>>>>>
Newspaper::Newspaper() : name(0), publisher(0), edition() {}
 
Newspaper::Newspaper(const char *n, const char *p, const int e) :
    name(0), publisher(0), edition()
{
    init(n, p, e);
}
 
Newspaper::Newspaper(const Newspaper &n) : name(0), publisher(0), edition()
{
    init(n.name, n.publisher, n.edition);
}
 
Newspaper& Newspaper::operator= (const Newspaper &n)
{
    if (this != &n) // проверка на присваивание самому себе
    {
        clear();
        init(n.name, n.publisher, n.edition);
    }
    return *this;
}
 
Newspaper::~Newspaper()
{
    clear();
}
 
void Newspaper::setName(const char *n)
{
    delete []name;
    name = new char[strlen(n) + 1];
    strcpy(name, n);
}
 
void Newspaper::setPublisher(const char *p)
{
    delete []publisher;
    publisher = new char[strlen(p) + 1];
    strcpy(publisher, p);
}
 
void Newspaper::setEdition(const int e)
{
    edition = e;
}
 
char* Newspaper::getName() const
{
    return name;
}
 
char* Newspaper::getPublisher() const
{
    return publisher;
}
 
int Newspaper::getEdition() const
{
    return edition;
}
 
void Newspaper::print() const
{
    cout << "Название: " << name << endl
         << "Издатель: " << publisher << endl
         << "Тираж:    " << edition << endl << endl;
}
 
void Newspaper::init(const char *n, const char *p, const int e)
{
    name = new char[strlen(n) + 1];
    strcpy(name, n);
    publisher = new char[strlen(p) + 1];
    strcpy(publisher, p);
    edition = e;
}
 
void Newspaper::clear()
{
    delete []name;
    delete []publisher;
}
 
ostream& operator<< (ostream &output, const Newspaper &n)
{
    output << n.getName() << endl
           << n.getPublisher() << endl
           << n.getEdition() << endl << endl;
    return output; // возвращаем сформированный поток
}
 
istream& operator>> (istream &input, Newspaper &n)
{
    char name[56], publisher[56];
    int edition;
    // считываем во временные переменные
    input >> name >> publisher >> edition;
    // формируем объект
    n.setName(name);
    n.setPublisher(publisher);
    n.setEdition(edition);
    return input; // возвращаем поток
}
Это если все-таки с char*
 
Текущее время: 07:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru