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

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

Войти
Регистрация
Восстановить пароль
 
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
#1

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

05.11.2011, 14:07. Просмотров 779. Ответов 2
Метки нет (Все метки)

Изучаю программирование, решаю задачу из учебника Дейтелов. Нужно написать класс, реализующий множество целых чисел. Множество представлено в виде массива, 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 ==========

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

Помогите найти ошибки. С++. ООП - C++
Собственно Задание: 1. В соответствии с вариантом заданий 1 создать класс, в котором определяются закрытые свойства и открытые методы...

Программа в стиле ООП - ошибки - C++
Ошибки: Крякозябры вместо русского При выводе списка с большим количеством - крах Не удаляет заявки (Функция del) #include...

Что такое ООП. - C++
&quot;Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов...

Что можно выполнить на ООП - C++
Подкиньте идею, что можно написать на ООП ? только не сильно сложное. Просто хочу применить свои знание и что то сделать на ООП, но не знаю...

Что учить после ООП? - C++
Здравствуйте, хотел бы узнать ваше мнение! Я разобрался с основами си++.Хотел бы вот узнать что учить , с чем разбираться дальше, куда...

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки - C++
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения...

2
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
05.11.2011, 14:09 #2
У вас две декларации метода UnionOfIntegerSet имеют одинаковые параметры, а следовательно не перегружаются, а вызывают ошибку.
0
ramarren14
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
05.11.2011, 14:15  [ТС] #3
Да спасибо я очень невнимательный.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2011, 14:15
Привет! Вот еще темы с ответами:

Что нужно изучить в c++, перед изучением ООП - C++
Перечислите темы, которые я должен знать, перед изучением ООП, просто не знаю готов ли я, все ли я выучил)

ООП (что должно находится внутри метода ToString?) - C++
Подскажите пожалуйста, что должно находится внутри метода ToString, который должен возвращать строку с адресом. Возможно нужна какае ни то...

ООП в С++ (наследование, инкапсуляция, полиморфизм, перегрузка операторов): что читать? - C++
Нужно освежить, подзабылось. Были у меня институцкие методички доцента Шеховцова. Хороша вещь, но потерялись. Нужны либо набор...

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


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

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

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