Библиотека STL (Standart Template Library)
Страница 9. Наш класс в векторе


Наш класс в векторе

На данный момент мы использовали в векторе стандартные классы MFC, а как быть для того, чтобы в вектор можно было пеместить произвольный класс ? Для этого нужно соблюдать ряд условий. Минимальные условия.

  • Конструктор по умолчанию
  • Конструктор копий
  • Деструктор

Давайте реализуем и попробуем.

// СlassVec.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include "vector"
#include "iostream.h"

using namespace std;

class CMyClass
{
public:
CMyClass();// конструктор по умолчанию
CMyClass(const CMyClass &my);// конструктор копий
CMyClass(int xx,int yy);
~CMyClass();// деструктор
int x;
int y;
};

CMyClass::CMyClass()
{
x=0;
y=0;
}

CMyClass::CMyClass(const CMyClass &my)
{
x=my.x;
y=my.y;
}

CMyClass::CMyClass(int xx,int yy)
{
x=xx;
y=yy;
}

CMyClass::~CMyClass()
{
}


void main()
{
vector< CMyClass > v;
v.push_back(CMyClass(1,1));
v.push_back(CMyClass(2,2));
v.push_back(CMyClass(3,3));
for (int x=0;x < v.size();x++)
cout << v[x].x << " " << v[x].y << endl;
};

Естественно, это только самые базовые возможности. Для полного функционирования потребуется перегрузить достаточное количество операций. Довольно много. Как определить необходимость перегрузки данной операции ? Компилятор сам скажет :-)) в виде error :-). Мы знаем, что вектор может работать с архивом, а наш класс пока не умеет, и сортировка вряд ли будет нормальная пока не определены правила, как определить кто старше или больше !!!

 
« Предыдущая статья   Следующая статья »