Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Организация исходного кода



В многофайловом проекте определение шаблона класса обычно выносится в отдельный файл. В то же время для инстанцирования компилятором конкретного экземпляра шаблона класса необходимо, чтобы определение шаблона находилось в одной единице трансляции с данным экземпляром.

В связи с этим принято размещать все определения шаблонного класса в некотором заголовочном файле, например point.h, и подключать его к нужным файлам с помощью директивы #include. Для предотвращения повторного включения этого файла, которое может иметь место в многофайловом проекте, обязательно используйте «стражи включения», реализуемые посредством директивы #ifndef

Продемонстрируем эту технику на примере нашего класса point:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

/ / point.h

#ifndef POINT_H

#define POINT_H

template <class T> class point {

public:

point(T _х = 0, Т _у = 0): х(_х), у(_у) {}

Void Show();

private:

Т x, у;

};

template <class Т> void point<T>::Show() {

cout << " (" << x << ", " << у << ")" << endl;

}

#endif /* POINT_H */

/////////////////////////////////////////////////

// Main.cpp

#include <iostream>

#include "point.h"

Using namespace std;

int main() {

point<double> p1; //1

point<double> p2(7.32, -2.6); // 2

Pl.Show(); p2.Show();

point<int> p3(13, 15); // 3

point<short> p4(17, 21); // 4

P3.Show(); p4.Show();





Дата публикования: 2014-11-28; Прочитано: 280 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...