: "액세스와C++ : 포함하는 클래스 자체의 객체 초기화
가class Sorter
{
protected:
vector<int> v;
public:
Sorter(){};
Sorter(vector<int> input_vector);
virtual void sort() = 0;
};
Sorter::Sorter(vector<int> input_vector)
{
v.assign(input_vector.begin(), input_vector.end());
}
class MergeSorter : public Sorter
{
public:
MergeSorter():Sorter(){};
MergeSorter(vector<int> input_vector):Sorter(input_vector){};
vector<int> sorted_v;
MergeSorter* left;
MergeSorter* right;
void merge();
void sort();
};
void MergeSorter::sort()
{
if(v.size() <= 1)
return;
int mid = int(v.size()/2);
left->v.assign(v.begin(), v.begin() + mid);
right->v.assign(v.begin() + mid, v.end() + 1);
left->sort();
right->sort();
left->v.assign(left->sorted_v.begin(), left->sorted_v.end());
right->v.assign(right->sorted_v.begin(), right->sorted_v.end());
merge();
return;
}
...
그것은 컴파일 않습니다, 그러나 프로그램 충돌 위반 위치를 읽는 중입니다. "라는 메시지를 left->v
에 지정하려고합니다. 실제로 객체 left
(및 right
)을 먼저 생성해야하지만 같은 클래스의 객체이기 때문에 어디서 그 객체를 만들지는 모릅니다.
"같은 계급"을 어떤 종류의 장애물로 인식하는 것 같습니다. 왜? 이 상황에 대해 특별한 것은 없습니다. 확인을 해 주셔서 감사합니다. – AnT