-1
다음 코드에서 템플릿을 사용하려고했지만 주 기능의 첫 번째 줄에 문제가 있습니다!C++ 용 템플릿 사용
{
#include <iostream>
using namespace std;
template <class T>
struct node
{
T inf;
node<T> * next;
};
template <class S>
class String
{
private :
int Slength;
node<S> * SS;
public :
void get_String()
{
SS = new node<S>;
SS -> next = NULL;
node<S> * now = SS;
char input;
while(input = getchar())
{
if((input =='\n') || (input == ' ') || (input == '\t'))
break;
now -> inf = input;
now -> next = new node<S>;
now = now -> next;
now -> next = NULL;
++Slength;
}
}
void show()
{
node<S> * now = SS;
while(now -> next != NULL)
{
cout << now -> inf ;
now = now -> next;
}
cout << endl;
}
};
int main()
{
String a;
a.get_String();
a.show();
cout << char(0) << " " << int(' ') << " " <<endl;
system("pause");
return 0;
}
나는 그 이후
<char>
를 추가로 해결할 문제가있다! 다른 좋은 방법과 효과적인 방법이 있습니까? 그리고 템플릿에 대한 신뢰할 수 있고 읽기 쉬운 참조를 알고 있습니까? String
이후
이유가있는'{'코드의 시작 부분에? – talnicolas
클래스 템플릿을 인스턴스화 할 때 인수 목록을 제공해야합니다. 'template class String ...'을 사용했다면'String <> a;'를 사용할 수 있지만, 모든 템플릿 인자의 기본값이더라도 꺽쇠 괄호 . BTW, 연결된 문자 목록으로 문자열을 * horrendously * 비효율적 인 것입니다 (실제 데이터의 모든 바이트에 대한 포인터 적어도 4 바이트 그림). 노드를 동적으로 할당하기 때문에 일반적으로 노드 당 최소 16 또는 32 바이트가됩니다. –
@talnicolas : 음 ... 대화식으로 호출되는 [cint] (http://en.wikipedia.org/wiki/CINT) 스크립트의 시작 부분에서 가끔 볼 수 있지만 그 경우에는 ' iostream과 같은 표준 헤더를'#include '할 필요가있다. – dmckee