2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49

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

05.11.2011, 14:07. Показов 2555. Ответов 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\inte gerset.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\inte gerset.h(12) : see declaration of 'IntegerSet::UnionOfIntegerSet'
1> IntergerSet.cpp
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\inte gerset.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\inte gerset.h(12) : see declaration of 'IntegerSet::UnionOfIntegerSet'
1>c:\users\selver\documents\visual studio 2010\projects\integerset\integerset\inte rgerset.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\inte rgerset.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\inte gerset.h(12) : see previous definition of 'UnionOfIntegerSet'
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Я не понимаю почему пишет, что функция уже определена или то, что функция уже имеет описание?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2011, 14:07
Ответы с готовыми решениями:

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

Знаете типичные ошибки в ООП? ;)
Прииивет!!! :) :confusion: Вот интересно, какие пунктики вы выделите касаемо ошибок в коде при ООП подходе.:rtfm: Можете не раскрывать...

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

2
 Аватар для DKOI
24 / 24 / 0
Регистрация: 08.09.2010
Сообщений: 136
05.11.2011, 14:09
У вас две декларации метода UnionOfIntegerSet имеют одинаковые параметры, а следовательно не перегружаются, а вызывают ошибку.
0
2 / 2 / 0
Регистрация: 14.07.2011
Сообщений: 49
05.11.2011, 14:15  [ТС]
Да спасибо я очень невнимательный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2011, 14:15
Помогаю со студенческими работами здесь

[Code review] ООП ошибки
Здравствуйте! Есть программа и она рабочая. И мне для дальнейшего программирования необходимо знать насколько она правильно, оптимально и...

Поиск и решение ошибки в ООП
Добрый день,нужна помощь! Начал изучать java,дошел до ООП и в примере создают новый класс &quot;кот&quot;,который хотят использовать в...

Оцените класс (ООП), укажите на ошибки.
Добрый день, буквально вчера решил перейти к ООП. Вот один из классов который уже успел настряпать class Summa { var $summa; ...

ООП, графика. Не пойму в чем ошибки
Всем добрый день. Есть программа, никак не могу понять на что ругается компилятор. Пишет следующее: (11,25) function header doesn't match...

Найти ошибки в данной программе (известно что есть только 2 ошибки)
У меня в модуле с програмирования задание: Найти ошибки в данной программе (известно что есть только 2 ошибки) .model small .data ...


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

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

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru