반응형
MyArray.h
#pragma once
namespace samples
{
template<typename T>
class MyArray
{
public:
MyArray();
bool Add(const T& data);
size_t GetSize() const;
private:
enum { MAX = 3 };
size_t mSize;
T mArray[MAX];
};
template<typename T>
MyArray<T>::MyArray()
: mSize(0)
{
}
template<typename T>
size_t MyArray<T>::GetSize() const
{
return mSize;
}
template<typename T>
bool MyArray<T>::Add(const T& data)
{
if (mSize >= MAX)
{
return false;
}
mArray[mSize++] = data;
return true;
}
}
MyArrayExample.cpp
#include <iostream>
#include "IntVector.h"
#include "MyArray.h"
#include "MyArrayExample.h"
using namespace std;
namespace samples
{
void MyArrayExample()
{
MyArray<int> scores;
scores.Add(10);
scores.Add(50);
cout << "scores - Size: " << scores.GetSize() << endl;
MyArray<IntVector> intVectors;
intVectors.Add(IntVector(1, 1));
intVectors.Add(IntVector(5, 3));
cout << "intVectors - Size: " << intVectors.GetSize() << endl;
MyArray<IntVector*> intVectors2;
IntVector* intVector = new IntVector(3, 2);
intVectors2.Add(intVector);
cout << "intVectors2 - Size: " << intVectors2.GetSize() << endl;
delete intVector;
}
}
좋은 예제가 있어 기록을 남깁니다. 헤더파일안에 템플릿 구현 함수를 포함시켜야 하는 이유와 개념에 대해서도 알 수 있엇고, 일반적으로 다양한 인수값을 템플릿 클래스로 구현하기 위해서, 참조형태로 값을 받아 넣는 방식에 대해서도 알 수 있었습니다. 템플릿 클래스를 구현할 떄, 위 방식을 잘 활용하여 구현하도록 하겠습니다.
참조한 예제는 아래에서 확인하실 수 있습니다.
반응형
'SW > C++' 카테고리의 다른 글
C++ : 템플릿 함수 : Math 예제 구현해보기 (0) | 2020.04.23 |
---|---|
C++ : 템플릿 활용 : 고정형 사이즈 벡터 만드는 예제 (0) | 2020.04.22 |
C++ : 템플릿 프로그래밍 : 기본 개념, 예제, 활용방법, 주의사항 (0) | 2020.04.20 |
C++ : 가변 인자 템플릿 : 장점, 사용법, 예제, 개념 (0) | 2020.04.19 |
C++ : module : 모듈 시스템 개요, 사용 방법, 장단점 (0) | 2020.04.18 |