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

STL контейнер stack, содержит пользовательский тип данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа расчета http://www.cyberforum.ru/cpp-beginners/thread899233.html
Составить программу расчета значения функции Z=3sin x3-|2.5cos xy+1.8tg x2|+1 при любых x и y помогите написать код программы
C++ Указатели Объясните мне что такое указатели. Прочитал в книге там такое написано что лучше не читать. http://www.cyberforum.ru/cpp-beginners/thread899226.html
C++ Алгоритм поиска (прямой метод)
Кто-нибудь может написать реализацию алгоритма поиска Forward Dawg Algorithm??
C++ Проверка на остаток числа
Нужно проверить в программе имеет ли вводимое число s дробную часть (например 5464.454), если же было введено просто целое число то вывести ошибку об этом и повторить ввод числа. Программа: #include <iostream> #include <vector> #include <string> using namespace std; int main() { string s;
C++ курсор в переменной FILE http://www.cyberforum.ru/cpp-beginners/thread899209.html
Вот так окрываю файл: FILE *INPUT_FILE = fopen(inputFile,"rt"); //...читаю разное при помощи getc(), gets(), и др. А вопрос простой, как курсор назад переместить? Добавлено через 3 минуты Допустим на 1 позицию, на 1 символ?
C++ Разукрасить разними цветами самые большие и самые наименьшие элементы массива Разукрасить разними цветами самые большие и самые наименьшие элементы массива. подробнее

Показать сообщение отдельно
Дев4енка
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 85
12.06.2013, 10:27     STL контейнер stack, содержит пользовательский тип данных
Ошибки при компиляции следующего кода:
Файл element.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef ELEMENT_H
#define ELEMENT_H
#include <iostream>
using namespace std;
 
class Element
{
    char *Name;
    int Number;
public:
    Element();
    Element(const char*,const int);
    friend ostream& operator <<(ostream&, Element&);
    Element(const Element&);
    Element &operator=(Element&);
    bool operator <(Element&);
    char *GetName() const;  // исправила
    int GetNumber() const;   // исправила
    ~Element();
};
 
#endif // ELEMENT_H

Файл element.cpp
Кликните здесь для просмотра всего текста
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
#include"element.h"
#include<string.h>
#include<QString>
#include<iostream>
#include <ostream>
 
using namespace std;
Element::Element()
{
    Name=new char[8];
    strcpy(Name,"Noname");
    Number=0;
}
Element::Element(const char* _Name,const int _Number){
    Name=new char[strlen(_Name)+1];
    strcpy(Name,_Name);
    Number=_Number;
}
Element::Element(const Element &El){
    Name=new char[strlen(El.GetName())+1];
    strcpy(Name,El.GetName());
    Number=El.GetNumber();
}
Element::~Element()
{
}
 
char *Element::GetName(){
    return Name;
}
int Element::GetNumber(){
    return Number;
}
ostream& operator<<(ostream& ostr,Element& El){
    ostr<<"Имя объекта:"<<El.GetName()<<"Количество:"<<El.GetNumber()<<endl;
    return ostr;
}
Element&Element::operator=(Element&El){
    if(*Name)
    delete[]Name;
    Name=new char[strlen(El.GetName())+1];
    strcpy(Name,El.GetName());
    Number=El.Number;
    return*this;
}
bool Element::operator<(Element&El){
    if(Number<El.Number)
    return true;
    else
    return false;
}

Файл main.cpp
Кликните здесь для просмотра всего текста
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
#include <QtCore/QCoreApplication>
#include "element.h"
#include <iostream>
#include <stack>
using namespace std;
 
void StackOut(stack<Element> TempStack)
{
    do
    {
        cout<<TempStack.top()<<endl;
        TempStack.pop();
    }
    while(TempStack.empty()==false);
    cout<<endl;
}
 
 
stack<Element> StackDel(stack<Element> WorkStack,int from,int count)
{
    stack<Element> TempStack;
    for(int i=0;i<from;i++)
    {
        TempStack.push(WorkStack.top());
        WorkStack.pop();
    }
    for(int i=0;i<count;i++)
        WorkStack.pop();
    do
    {
        WorkStack.push(TempStack.top());
        TempStack.pop();
    }
    while(TempStack.empty()==false);
    return WorkStack;
}
 
 
 
stack<Element> StackAdd(stack<Element> StackTo,stack<Element> StackFrom)
{
    do
    {
        StackTo.push(StackFrom.top());
        StackFrom.pop();
    }
    while(StackFrom.empty()==false);
    return StackTo;
}
 
 
int main()
{
    setlocale(LC_ALL,"RUS");
//-------------------------------------------------------------------------1
    cout<<"       ЗАДАНИЕ 1"<<endl;
    stack<Element> ST1;
    Element el1("a",1), el2("b",1),el3("c",1),el4("d",1),el5("e",1);
    //for(int i=0;i<8;i++)
        //ST1.push((i+1)*0.7);
    ST1.push(el1);
    ST1.push(el2);
    ST1.push(el3);
    ST1.push(el4);
    ST1.push(el5);
    cout<<"ГОТОВО! "<<endl<<endl;
//------------------------------------------------------------------------2
    cout<<"       ЗАДАНИЕ 2"<<endl;
    StackOut(ST1);
    cout<<endl;
//-------------------------------------------------------------------------3     далее закомменчено,т.к. еще начало проги не отлажено
/*    cout<<"       ЗАДАНИЕ 3"<<endl;                    
    ST1.pop();
    ST1.push(7.9);
    StackOut(ST1);
    cout<<endl;
//-------------------------------------------------------------------------4
cout<<"       ЗАДАНИЕ 4"<<endl;
cout<<"НЕВОЗМОЖНО ВЫПОЛНИТЬ Т.К. ДЛЯ СТЕКА НЕВОЗМОЖНО СОЗДАТЬ ИТЕРАТОР!"<<endl<<endl;
//-------------------------------------------------------------------------5
    cout<<"       ЗАДАНИЕ 5"<<endl;
    stack<Element> ST2;
    for(int i=0;i<8;i++)
        ST2.push((i+1)*1.2);
    StackOut(ST2);
    cout<<"ГОТОВО! "<<endl<<endl;
//-------------------------------------------------------------------------6
    cout<<"       ЗАДАНИЕ 6"<<endl;
    ST1=StackDel(ST1,2,2);
    ST1=StackAdd(ST1,ST2);
    cout<<"Первый стек: "<<endl;
    StackOut(ST1);
    cout<<"Второй стек: "<<endl;
    StackOut(ST2);
    ST1=StackDel(ST1,2,2);
    ST1=StackAdd(ST1,ST2);
//-------------------------------------------------------------------------6
    cout<<"       ЗАДАНИЕ 7"<<endl;
    cout<<"Первый стек после перетасовки: "<<endl;
    StackOut(ST1);
    cout<<"Второй стек после перетасовки: "<<endl;
    StackOut(ST2);
 
    cin.get();
    return 0;*/}



Вот ошибки:
C:\Users\Steisi\Desktop\lab10_3_1_oop\main\element.cpp:20: ошибка: C2662: Element::GetName: невозможно преобразовать указатель "this" из "const Element" в "Element &"
В результате преобразования теряются квалификаторы

C:\Users\Steisi\Desktop\lab10_3_1_oop\main\element.cpp:21: ошибка: C2662: Element::GetName: невозможно преобразовать указатель "this" из "const Element" в "Element &"
В результате преобразования теряются квалификаторы


C:\Users\Steisi\Desktop\lab10_3_1_oop\main\element.cpp:22: ошибка: C2662: Element::GetNumber: невозможно преобразовать указатель "this" из "const Element" в "Element &"
В результате преобразования теряются квалификаторы


Упс.Сама исправила(в element.h):

C++
1
2
char *GetName() const;
int GetNumber() const;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru