1 분 소요

1. NamedType

  • int, double 등의 타입이름을 사용하지 말고, 의미를 가지는 타입을 사용하자
  • Width, Height, xPos, yPos 등
#include <iostream> 
using namespace std; 
  
template<typename T, typename Parameter> class NamedType 
{ 
  T value; 
public: 
  NamedType(const T& v) : value(v) {} 
  T& get() { return value; } 
}; 
  
using Width = NamedType<int, struct WidthParameter>; 
using Height = NamedType<int, struct HeigthParameter>; 
using xPos = NamedType<int, struct xPosParameter>; 
using yPos = NamedType<int, struct yPosParameter>; 
  
void foo(Width w, Height h) {} 
  
int main() 
{ 
  // named argument idioms 
  foo(Width(10), Height(20)); // 이렇게 사용하자 

  // Objective-C 와 swift가 아래와 유사하게 사용
  //setRect(x:10, y:10, width:100, height:100); 

  Width w = 10; 
  Height h = 10; 

  // 단점. width와 height가 동일 타입. 다른 타입으로 만들어야 함 
  // w = h; 
  cout << w.get() << endl; 
}
#include <iostream> 
#include <string> 
using namespace std; 
  
template<typename T, typename Parameter> class NamedType 
{ 
  T value; 
public: 
  NamedType(const T& v) : value(v) {} 
  NamedType(T&& v) : value(std::move(v)) {} 
  T& get() { return value; }                // 비상수 get 
  const T& get() const { return value; }    // 상수 get 
}; 
  
using FirstName = NamedType<string, struct stringP>; 
  
int main() 
{ 
  FirstName f1("aaa"); 
  const FirstName f3("aaa"); 
  FirstName f2(move(f1)); 
}

참고

codenuri 강석민 강사 강의 내용기반으로 정리한 내용입니다.
코드누리
NamedType


This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄. 

Top

댓글남기기