cpp_class_template - 8BitsCoding/RobotMentor GitHub Wiki

cpp_class_template

ํด๋ž˜์Šค๋„ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”?


class MyIntArray
{
public:
    bool Add(int data);
    MyIntArray();

private:
    enum { MAX = 3 };       // ์ด๋Ÿฐ์‹์œผ๋กœ ์ดˆ๊ธฐ Array์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ ์–ธ(์žฅ์ ์ด ์žˆ๋Š”๋ฐ ๊ฐ•์˜์„œ ๋“ค์„ ๊ฒƒ.)
    int mSize;
    int mArray[MAX];
};

// main
#include "MyIntArray.h"

int main() {
    MyIntArray scores;

    scores.Add(10);     // true
    scores.Add(20);     // true
    scores.Add(30);     // true
    scores.Add(40);     // false
}

Add์— intํ˜•๋งŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?


์ฃผ์˜ํ•  ์ ์€ ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ์˜ ๊ฒฝ์šฐ ํ—ค๋”ํŒŒ์ผ์— ์„ ์–ธ๋ถ€๋„ ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค๋Š” ์ 

๊ทธ๋ ‡์ง€ ์•Š์„ ์‹œ ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ

// MyArray.h
#pragma once
template<typename T>
class MyArray {
public:
    bool Add(T data);
    MyArray();
private:
    enum { MAX = 3 };
    int mSize;
    T mArray[MAX];
};

template<typename T>
bool MyArray<T>::Add(T data)
{
    // do something
}

template<typename T>
MyArray<T>::MyArray() : 
    mSize(0)
{
    
}
// main
MyArray<int> scores;        // OK
MyArray scores;             // Error

ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ ํŠธ๋ฆญ

Vector์˜ ํฌ๊ธฐ๋ฅผ ๋‚ด๊ฐ€ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค.(FixedVector)

// FixedVector.h
template<typename T, size_t N>
class FixedVector
{
public:
    //
private:
    T mArray[N];
};

template<typename T, size_t N>
FixedVector<T, N>::FixedVector() :
    mSize(0)
{
}

// others
// main.cpp
FixedVector<int, 16> number;

โš ๏ธ **GitHub.com Fallback** โš ๏ธ