STL 공부중인데 에러좀 봐주세요.
글쓴이: kirina70 / 작성시간: 목, 2008/02/07 - 1:39오전
#include <iostream> [code]#include <vector>
#include <set> [code]#include <string> #include <iterator> using namespace std; template<typename Container> void PrintContainer(string strTitle, Container &cont); int main() { int pArray[5] = {9,1,4,7,2}; list<int> l; copy(pArray, pArray+5, front_inserter(l)); PrintContainer("..",l); vector<int> v; for(int i=0;i<5;i++) back_inserter(v) = pArray[i]; PrintContainer("..", v); set<int> s; copy(pArray,pArray+5,inserter(s,s.begin())); PrintContainer("..", s); return 0; } template<typename Container> void PrintContainer(string strTitle, Container &cont) { cout << strTitle << ":"; for(Container::iterator it = cont.begin(); it != cont.end(); ++it) { cout.width(3); cout << *it; cout << endl; }
이렇게 작성하고 컴파일을 다음과 같이 하니 이런 메시지가 나오는데 처음이라 하나도 모르겠습니다.
cs20020965@cspro ~ $ g++ a.cpp
a.cpp: In function `void PrintContainer(std::basic_string
std::char_traits, std::allocator >, Container&)':
a.cpp:32: error: syntax error before `=' token
a.cpp:38: error: syntax error at end of input
책보고 빼겼는데 왜 이렇죠...
물론 책에서는 VC++로 했지만 (책은 vc.net으로 되어있었습니다.)
근데 책에 vc6에서도 컴파일 되게 하는 방법이 있어 따라했는데 에러가 대략 30개 정도
근데 저건 컴파일러의 차이가 없지 않나요...
거의 표준으로만 쓴거 같던데..
어떤 것이 잘못되었는지 알려주세요.....
원본파일은 첨부했습니다.
부디..
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 874바이트 |
Forums:
일단
copy에서 l대신 1로 쓴게 보이네요 소스 중간중간에 >, < 들이 빠진것 같은데 첨부파일로 올려주시면 보기 편할 것 같네요 template 함수 선언부도 template < typename Container > 이렇게 해야 하는데 이건 아마도 올릴때 html변환과정에서 문제생겨서 안나온것 같네요
아 그리고
list, vector, set에서도 <int> 붙여 주셔야 되는데. 그리고 g++의 경우 Container::iterator 앞에 typename을 붙여주셔야 할겁니다. 그리고 include에서도 괄호 다음에 뛰어쓰기 있으면 안되는군요
댓글 달기