На данный момент мы использовали в векторе стандартные классы 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 :-). Мы знаем, что вектор может работать с архивом, а наш класс пока не умеет, и сортировка вряд ли будет нормальная пока не определены правила, как определить кто старше или больше !!!