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

ООП что за ошибки? - C++

Восстановить пароль Регистрация
 
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
05.11.2011, 14:07     ООП что за ошибки? #1
Изучаю программирование, решаю задачу из учебника Дейтелов. Нужно написать класс, реализующий множество целых чисел. Множество представлено в виде массива, k принадлежит множеству, если a[k]=1, ну если 0, то не принадлежит соответственно. Ошибка в функциях UnionOfIntegerSet и UnionOfIntegerSet. Я новичок в программировании, буду рад если укажете на ошибку. Ну и заодно критику по коду(имхо он убог).
Собственно вот IntegerSet.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 class_IntegerSet
#define class_IntegerSet
 
class IntegerSet
{
public:
    IntegerSet();
    IntegerSet(int);
    ~IntegerSet();
    int GetSize()const;
bool ElementIntegerSet(int) const;
//IntegerSet& UnionOfIntegerSet(const IntegerSet &);
//IntegerSet& UnionOfIntegerSet(const IntegerSet &);
IntegerSet& InsertElement(int);
bool EqualSet(const IntegerSet &);
void SettPrint() const;
private:
    int size;
    int *Ptr;
    int num;
};
#endif
Вот IntegerSet.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
#include<iostream>
#include<time.h>
#include "IntegerSet.h"
 
IntegerSet::IntegerSet()
{
    size=50;
    Ptr=new int [size];
    for(int i=0;i<size;i++)
        Ptr[i]=0;
}
 
IntegerSet::IntegerSet(int x)
{
    size=x;
    Ptr=new int[size];
    srand(time(NULL));
    for(int i=0;i<size;i++)
        Ptr[i]=0+rand()%2;
}
 
IntegerSet::~IntegerSet()
{
    delete [] Ptr;
}
 
int IntegerSet::GetSize() const
{
    return size;
}
 
bool IntegerSet::ElementIntegerSet(int k) const
{
    if (Ptr[k]==1) return true;
    else return false;
}
 
/*IntegerSet& IntegerSet::UnionOfIntegerSet(const IntegerSet & rhs)
{
    int size_set;
    if (rhs.GetSize()<size) size_set=rhs.GetSize();
    else size_set=size;
    for(int i=0;i<size_set;i++)
    {
        if(Ptr[i]==1 || rhs.Ptr[i]==1) Ptr[i]=1;
        else Ptr[i]=0;
    }
  return *this;
}
 
IntegerSet& IntegerSet::UnionOfIntegerSet(const IntegerSet & rhs)
{
    int size_set;
    if (rhs.GetSize()<size) size_set=rhs.GetSize();
    else size_set=size;
    for(int i=0;i<size_set;i++)
    {
        if(Ptr[i]==1 && rhs.Ptr[i]==1) Ptr[i]=1;
        else Ptr[i]=0;
    }
  return *this;
} */
 
 
IntegerSet& IntegerSet::InsertElement(int k)
{
    Ptr[k]=1;
    return *this;
}
 
void IntegerSet::SettPrint() const
{
    for(int i=0;i<size;i++)
        std::cout<<" "<<Ptr[i];
}
 
bool IntegerSet::EqualSet(const IntegerSet & rhs)
{
    bool flag;
    if (rhs.GetSize()!=size) flag=false;
    else for(int i=0;i<size;i++)
    {
        if (Ptr[i]!=rhs.Ptr[i]) flag=false;
        else flag=true;
    }
  return flag;
}
Вот main, где я тестирую:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "IntegerSet.h"
#include<iostream>
 
int main()
{
    bool flag;
    IntegerSet Set_One;
    IntegerSet Set_Two(50);
    IntegerSet Set_Three;
    //Set_Three=Set_One.UnionOfIntegerSet(Set_Two);
    Set_Three.SettPrint();
    flag=Set_One.EqualSet(Set_Three);
    if (flag) std::cout<<"yes ";
    else std::cout<<" no ";
}
Если убрать комментарии компилятор Microsoft Visual C++ выдает
1>------ Build started: Project: IntegerSet, Configuration: Debug Win32 ------
1> main.cpp
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\integerset.h(13): error C2535: 'IntegerSet &IntegerSet::UnionOfIntegerSet(const IntegerSet &)' : member function already defined or declared
1> c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\integerset.h(12) : see declaration of 'IntegerSet::UnionOfIntegerSet'
1> IntergerSet.cpp
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\integerset.h(13): error C2535: 'IntegerSet &IntegerSet::UnionOfIntegerSet(const IntegerSet &)' : member function already defined or declared
1> c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\integerset.h(12) : see declaration of 'IntegerSet::UnionOfIntegerSet'
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\intergerset.cpp(17): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\intergerset.cpp(52): error C2084: function 'IntegerSet &IntegerSet::UnionOfIntegerSet(const IntegerSet &)' already has a body
1> c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\integerset.h(12) : see previous definition of 'UnionOfIntegerSet'
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Я не понимаю почему пишет, что функция уже определена или то, что функция уже имеет описание?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 14:07     ООП что за ошибки?
Посмотрите здесь:

Что такое ООП. C++
C++ Помогите найти ошибки. С++. ООП
Что можно выполнить на ООП C++
Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре C++
C++ ООП (что должно находится внутри метода ToString?)
что за ошибки? C++
C++ Программа в стиле ООП - ошибки
Что учить после ООП? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
05.11.2011, 14:09     ООП что за ошибки? #2
У вас две декларации метода UnionOfIntegerSet имеют одинаковые параметры, а следовательно не перегружаются, а вызывают ошибку.
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
05.11.2011, 14:15  [ТС]     ООП что за ошибки? #3
Да спасибо я очень невнимательный.
Yandex
Объявления
05.11.2011, 14:15     ООП что за ошибки?
Ответ Создать тему
Опции темы

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