C++ 템플릿 샘플...
글쓴이: namacin / 작성시간: 금, 2005/10/07 - 9:37오전
C++을 공부중입니다. 간단한 템플릿 예제를 만들어 봤는데
컴파일과 동작은 이상이 없습니다만..
제대로 이해를 하고 만든건지 조언을 듣고 싶어서요
고수님들이 보고 어떠한 문제 점이 있는지 지적을 해주시면 고맙겠습니다. 꾸벅~
#include <iostream> using std::cout; using std::endl; //---------------------------------------------------------------- template <typename C> class classData { public: virtual void func( void ) = 0; }; //---------------------------------------------------------------- template <typename C> class classA : public classData<C> { private: int a; public: classA( int z ){ a = z; }; // void func( void ) { a++; cout << a << endl; }; void func( void ); }; //---------------------------------------------------------------- template <typename C> void classA<C>::func( void ) { a++; cout << a << endl; } //---------------------------------------------------------------- template <typename C> class classB : public classData<C> { private: C b; public: classB( C z ){ b = z; }; void func( void ) { }; }; //---------------------------------------------------------------- template <typename C> class classC : public classData<C> { private: C c; public: classC( C z ){ c = z; }; void func( void ) { c += 10; cout << c << endl; }; }; //---------------------------------------------------------------- template <typename C> class Test { public: void func( C *t ) { t->func( ); }; }; //---------------------------------------------------------------- int main( void ) { classA<int> a(10); classB<int> c(20); classC<int> b(40); // func()을 사용하지 않더라도 based 클래스에 virtual로 // 선언되어 있으므로 dummy 펑션으로 func()을 만들어 // 주어야 한다. // int d = 100; Test< classData<int> > t; // Test 클래스에서 사용하는 자료형이 // classData<> 형 템플릿이다. t.func( &a ); t.func( &b ); t.func( &c ); // t.func( &d ); // t의 자료형과 매칭시킬수 없어서 컴파일 에러 return 0; }
Forums:
Re: C++ 템플릿 샘플...
제가 남 code 를 봐줄 주제는 못됩니다만,
Test::func() 함수의 매개변수는
classData 형이 와야만 하니까
아래처럼 바꾸시는게 더 맞지 않을까 싶네요.
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
답변 감사합니다.지금 막 보고 수정해 돌려 봤는데 컴파일에서 에러가
답변 감사합니다.
지금 막 보고 수정해 돌려 봤는데 컴파일에서 에러가 나네요
생각해보니까 main()에서
와 같이 선언을 했으니까 Test class의 C 자체가 classData<C> 가 되는것이 아닌가 싶습니다.
어찌됐건 답변 감사합니다. 꾸벅~
템플릿이란 놈.. 개념상으로는 별거 아닌거 같았는데
막상 써먹어 보려니까 이것저것 생각해야할게 많네요..
C++ 너무 어렵습니다.. ㅠ.ㅠ
[quote="namacin"]생각해보니까 main()에서 [co
그렇습니다. 따라서 수정한 코드에서는 Test<int> t 로 써야지요.
좀 더 유연하게 만들기 위해 template template parameter와
template member function을 쓰는 방법도 있습니다.
좋은 답변들 감사드립니다.제가 가지고 있는 책에는 이런 내용들이
좋은 답변들 감사드립니다.
제가 가지고 있는 책에는 이런 내용들이 없었는데..
난이도를 조금 높여서 다른 책을 사서 봐야겠네요
괜찮은 책 좀 추천해주시겠습니까?
너무 이론적인 책은 cpu 사양이 떨어지는 탓인지 잘 이해가 안되더라구요.
손으로 이해할 수 있는 책이면 좋을것 같습니다.
꾸벅~
[list][*]Bjarne Stroustrup, The C++ Pr
- Bjarne Stroustrup, The C++ Programming Language
본문과 부록의 템플릿 부분만 이해하면 실무에서 부족함을 느낄 일은 별로 없습니다.
- D. Vandevoorde & N. Josuttis, C++ Templates: The Complete Guide
제목 그대로 템플릿에 대해서만 다룹니다. 상당히 깊은 부분까지 다루고 있기에
[/]게다가 C++의 바이블로 통하는 책이니 사두면 손해볼 일은 없을 겁니다.
내용은 어려운 편입니다. 저도 지금 이 책을 보고 있는데 진도가 무척 느립니다. --;
댓글 달기