🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #4578

Re: Do you need template in C++ ?

#4578
From: Ken Kawahigashi
Date: Wed, 15 Jul 1992 11:06
160 lines
4954 bytes
$B$3$s(J$B$K$A$O!"@nEl!w?@F`@nBg>pJs$G$9!#(J

In article <12359@ume.cc.tsukuba.ac.jp> nozomi@sakura.cc.tsukuba.ac.jp (NoZomi Ytow) writes:

 >template $B$r;H$&BX$o$j$K!"(Jclass Template $B$r:n$C$F!"(J
 >$B$=$3$GAH$_9~$_7?$KIU(J$B$$$FDj5A$5$l$F$$$k1i;;;R$rA4ItDj5A$7$F$*$$$F!"(J
 >template $B5!G=$NBP>]$H$J$j$=$&$J%/%i%9$OA4$F(J Template $B$+$iF3=P$9$l$P!"(J
 >$BJL$K(J template $B5!G=$OMW$i$J$$$N$G$O$J$$$+$H;W$&$N$G$9$,!"(J
 >$B2?$+4*0c$$$r$7$F$$$k$G(J$B$7$g$&$+!#(J
 >$B!tAH$_9~$_$N7?$KBP1~$7$F(J 
 >$B!t(Jclass Char $B$J$I$r(J Template $B$+$iF3=P$7$J$/$F$O$J$j$^$;$s$,!#(J

polymorphic $B$J%/%i%93,AX$G$b$C$F(J template $B$,BeMQ$G$-$k$+!"$H$$$&(J
$BLdBj$G$9$h$M!)(J

$B3N$+$KF1$85!G=$r;}(J$B$D%/%i%9$r:n$k$3$H$,2DG=$G$9!#$7$+$70c$$$O$J$$$H(J
$B$$$&$3$H$O$J$$$H;W$$$^$9!#(J

$B!&7Q>5$r;H$C$?%/%i%93,AX(J$B$O6&DL$N%$%s%?!<%U%'!<%9$H0[$J$k%$%s%W%j%a%s(J
  $B%F!<%7%g%s$r;}$D$,!"(J

$B!&(Jtemplate $B$O0[$J$k%G!<%?7?$KBP$7(J$B$FF1$8%$%s%W%j%a%s%F!<%7%g%s$r(J
  $BE,MQ$9$k(J

$B$H$$$&0c$$$,$"$j$^$9!#$D$^$j!"%/%i%972$r0[$J$k4QE@$GJ,N`$7(J$B$F$$$k$H(J
$B$$$&Iw$K9M$($l$PNI$$$G$7$g$&!#(J

$B$7$?$,$C$F!"7Q>5$K$h$k%/%i%9%i%$%V%i%j$O0[<o%*%V%8%'%/%H$r0l(J$B$D$N(J
$B%3%s%F%J$K3JG<$9$k$h$&$J>l9g$K8~$$$F$*$j!"(Jtemplate $B$OF1<o%*%V%8(J
$B%'%/%H$r3JG<$9$k%3%s%F%J$r$=$N<o(J$BN`Kh$KMQ0U$7$?$$>l9g$KJXMx$@$H$$(J
$B$&$3$H$,8@$($k$H;W$$$^$9!#(J

$BNc$r5s$2$k$H!"(J

class Template {
// $B6&DL(J$B%$%s%?!<%U%'!<%9(J
};

class Int : public Template {
	int data;
//
};

class Window : public Template {
	int top, left, width, height;
//
};

class Stack {
//
public:
	void push(Template& o);
	Template& pop();
};

$B$N$h$&$K(J Stack $B$K(J Int $B$b(J Window $B$b3JG<$7$?$$;~$K$O7Q>5$OJXMx$G$9$,!"(J
Int $B$7$+F~$l$J$$(J Stack $B$G$o$6$o$6(J Int $B$H$$$&7?>pJs$r<:$o$;$F$^$G(J
push(Template&); $B$H$O!"$7$?$/$J$$$G$9$h$M!#(J

template $B$J$i(J$B!"(J

template <class T>
class Stack {
//
public:
	Stack() { ... }
	void push(T& o) { ... }
	T& pop() { ... }
};

$B$@$1$G:Q$_$^$9!#$"$H$O%3%s%Q%$%i$,(J

Stack<int> s;

$B$H$$$&@k8@$r8+$D$1$?;~$K!"(J

class IntStack {
//
public:
	IntStack() { ... } 
	void push(int& i) { ... }
	int& pop() { ... }
};

$B$HF1Ey$N%/%i(J$B%9$r<+F0E*$K@8@.$7$F$/$l$^$9!#(J

 >template $B$H$N0c$$$O%j%s%/$,@EE*$+F0E*$+!"$H$$$&B>$K(J
 >$B2?$+$"$j$^$9$G(J$B$7$g$&$+!#(J

$B8E@%$5$s$,=q$+$l$F$$$?$h$&$K(J template $B$O4pK\E*$K$O%^%/%m(J
$B$HF1$8$G$9$+$i!J8=$K!"(J C++ 2.0 $B0J(J$BA0$G$O7?%Q%i%a!<%?IU%/%i(J
$B%9$O(J generic.h $B$N%^%/%m72$G<B8=$5$l$F$$$^$7$?!K!"<B:]$K(J
$B;H$o$l$J$$8B$j0l@Z%*(J$B%V%8%'%/%H$O:n$i$l$^$;$s!#$G$9$+$i!"(J
$B7Q>5$K$h$k%/%i%93,AX$HHf$Y!"%*!<%P%X%C%I$,$J$/$J$k$H$$$&(J
$BMxE@$,$"(J$B$j$^$9!#(J

$B$?$@!"(J template $B$r;H$C$F%/%i%9$rDj5A$9$k>l9gCm0U$7$J$1$l(J
$B$P$J$i$J$$$N$O!"%a%s%P4X?t$r86B'E*(J$B$K%$%s%i%$%s$GDj5A$7$J(J
$B$1$l$P$J$i$J$$$3$H$G$9!#(J

// Foo.h
template <class T>
class Foo {
public:
	void bar(T&);
};

// Foo.cc
template <class T>
void Foo<T>::bar(T& x)
{
//
}

// Main.cc
#include "Foo.h"

int main()
{
	Foo<int> a;
	a.bar(1);
//
}

$B$H$9$k$H!"(JMain.cc $B$G(J Undefined symbol Foo<int>::bar(int&)
$B$N%j%s%+%(%i!<$,=P$F$7$^$$$^$9!#$3$l$O!"(JMain.cc $B$N$I$3$K$b(J
Foo<int>::bar(int&) $B$NDj5A$,$J$$$+$i$G$9(J$B!#(JFoo.cc $B$O$$$o$P(J
$B%^%/%mDj5A$@$1$"$k$h$&$J$b$N$J$N$G!"%*%V%8%'%/%H$O2?$b:n$i(J
$B$l$^$;$s!#(J 

// Foo.h
template <class T>
class Foo {
public:
	void bar(T&) { ... }
};

// Main.cc
#include "Foo.h"

int main()
{
	Foo<int> a;
	a.bar(1);
//
}

$B$H$9$l$P!"(JMain.cc $B$G@5$7$/(J Foo<int> $B%/%i%9$N%*%V%8%'%/%H$,@8(J
$B@.$5$l(J$B$^$9!#(J
 
$B0JA0!"#2EY$P$+$j$3$N#N#G$G$3$N$3$H$,<h$j>e$2$i$l$F$$$^$7$?$,!"(J
$B<+J,$J$j$KG<F@$G$-$k@bL@$,8+$D(J$B$+$C$?5$$,$9$k$N$G!"=q$$$F$_$^(J
$B$7$?!#(J

$BD9$/$J$C$F?=$7Lu$"$j$^$;$s$G$7$?!#(J

--
/*       $B@nEl(J $B7r!w>pJs2J(J$B3X2J!%M}3XIt!%?@F`@nBg3X!%J?DM%-%c%s%Q%9(J       */
/*                      ken@info.kanagawa-u.ac.jp                      */
/*                      kk@tansei.cc.u-tokyo.ac.jp                     */
Technical Details
Message-ID: <KK.92Jul15200617@tansei2.tansei.cc.u-tokyo.ac.jp>
Path: arc1-ca.pugleaf.net!sparky!uunet!ccut!news.u-tokyo.ac.jp!yayoi!tansei1!kk
References: <12359@ume.cc.tsukuba.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,cdee883fc077f6e7
X-Google-Attributes: gid106434,public
X-Google-ArrivalTime: 1992-07-14 19:46:48 PST
Path: arc1-ca.pugleaf.net!sparky!uunet!ccut!news.u-tokyo.ac.jp!yayoi!tansei1!kk
From: kk@tansei.cc.u-tokyo.ac.jp (Ken Kawahigashi)
Newsgroups: fj.lang.c
Subject: Re: Do you need template in C++ ?
Message-ID: <KK.92Jul15200617@tansei2.tansei.cc.u-tokyo.ac.jp>
Date: 15 Jul 92 11:06:17 GMT
References: <12359@ume.cc.tsukuba.ac.jp>
Sender: news@tansei.cc.u-tokyo.ac.jp
Organization: Computer Centre, University of Tokyo
Lines: 160
In-reply-to: nozomi@sakura.cc.tsukuba.ac.jp's message of 10 Jul 92 16:52:44 GMT