c++ 연산자 오버로딩 무엇이 잘못되었는지 좀 알려주세요

연산자 오버로딩을 하면서 + 부분을 구현하는데 안되더라구요 확인차원에서 일반적으로 때려 박아 봤는데 역시나 안되서 글남겨봅니다. 문법문제인거 같은데 저가 C++처음이라 잘모르겠습니다. +연산자 보시고 +부분만 왜틀렸는지 설명 부탁드리겠습니다.

#include <iostream>
using namespace std;

class IntegerSet {
    int numElements, maxNumElements;
    int *elements;
public:

    IntegerSet(int max) {
        numElements = 0;
        maxNumElements = max;
        elements = new int[max];
    }
    ~IntegerSet(); // to implement
    int addAnElement(int element); // add an integer element, to implement 
    IntegerSet operator+(const IntegerSet& other); // union, to implement
    IntegerSet operator-(const IntegerSet& other); // difference, to implement
    IntegerSet operator*(const IntegerSet& other); // intersection, to implement
    friend ostream& operator<<(ostream& os, const IntegerSet& integerSet);

};

IntegerSet::~IntegerSet() {
    delete(elements);
}

int IntegerSet::addAnElement(int element) {
    if (numElements < maxNumElements) {
        elements[numElements] = element;
        numElements++;
        return 0;
    }
    else
        return -1;
}

//여기 왜 안되죠?
IntegerSet IntegerSet::operator+(const IntegerSet& other) {
    IntegerSet temp(5);
    temp.addAnElement(22);
    return temp;
}

ostream& operator<<(ostream& os, const IntegerSet& integerSet) {
    cout << "number of elements : " << integerSet.numElements << "\n";
    for (int i = 0;i<integerSet.numElements;i++)
        cout << integerSet.elements[i]<<" ";
    cout << "\n";
    return os;
}

int main() {
    IntegerSet a(10), b(5);
    int i;
    for (i = 0;i < 5;i++) {
        a.addAnElement(i);
        b.addAnElement(10 - i);
    }
    cout << a << endl;
    cout << b << endl;

    IntegerSet c = a + b;

    return 0;
}
  • 컴파일은 되는 것 같은데..., 연산자 + 로 무엇을 하고자 하는 건가요? 허대영(Daeyoung Heo) 2016.4.24 07:17
  • 목표는 각각의 집합에 있는 숫자를 합하는걸 만들려고 하고있습니다. 근데 저도 컴파일은 되는데 실행하면 멈추더라구요 그래서 문법에서 문제가 있을거란 생각에 문법 테스트를 위해 위와같이 작성했습니다. 윤준상 2016.4.24 10:47

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.