|
| Templates Fra : Jonas Meyer Rasmusse~ |
Dato : 15-01-01 01:58 |
|
Hvordan adskiller jeg erklæringen af mine template klasser fra
implementationen?
Jonas
| |
Andreas Schou Værge (15-01-2001)
| Kommentar Fra : Andreas Schou Værge |
Dato : 15-01-01 06:45 |
|
"Jonas Meyer Rasmussen" <meyer@kampsax.dtu.dk> wrote: > Hvordan adskiller jeg erklæringen af mine template klasser fra > implementationen?
Smider dem i en separat header, som du så inkluderer hvor den er nødvendig.
Andreas
| |
Jonas Meyer Rasmusse~ (15-01-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 15-01-01 09:25 |
|
så er erklæringen stadig ved headeren...
"Andreas Schou Værge" <andreas@cs.auc.dk> wrote in message
news:r7w86.21334$W81.245326@twister.sunsite.dk...
> "Jonas Meyer Rasmussen" <meyer@kampsax.dtu.dk> wrote:
> > Hvordan adskiller jeg erklæringen af mine template klasser fra
> > implementationen?
>
> Smider dem i en separat header, som du så inkluderer hvor den
> er nødvendig.
>
> Andreas
| |
Rasmus Paulsen (15-01-2001)
| Kommentar Fra : Rasmus Paulsen |
Dato : 15-01-01 23:51 |
|
Hej!
Der er vist desvaerre ikke saa mange andre maader at goere det paa. Jeg
plejer selv, at lave en .h fil med deklarationer og en .inl fil med
definitioner. .inl inkluderer jeg saa fra .h filen.
VC++ 6.0 har endvidere problemer med member-template functions. Den kan ikke
finde ud af det, hvis man definere funktionerne uden for headeren. Det er en
known-bug, som aldrig er blevet lavet.
Hilsen
Rasmus
"Jonas Meyer Rasmussen" <meyer@kampsax.dtu.dk> wrote in message
news:93uc47$uqk$1@eising.k-net.dk...
> så er erklæringen stadig ved headeren...
> "Andreas Schou Værge" <andreas@cs.auc.dk> wrote in message
> news:r7w86.21334$W81.245326@twister.sunsite.dk...
> > "Jonas Meyer Rasmussen" <meyer@kampsax.dtu.dk> wrote:
> > > Hvordan adskiller jeg erklæringen af mine template klasser fra
> > > implementationen?
> >
> > Smider dem i en separat header, som du så inkluderer hvor den
> > er nødvendig.
> >
> > Andreas
>
>
| |
Asger K. Alstrup Nie~ (16-01-2001)
| Kommentar Fra : Asger K. Alstrup Nie~ |
Dato : 16-01-01 20:17 |
|
"Rasmus Paulsen" <rasmus.r.paulsen@get2net.dk> writes:
>VC++ 6.0 har endvidere problemer med member-template functions. Den kan ikke
>finde ud af det, hvis man definere funktionerne uden for headeren. Det er en
>known-bug, som aldrig er blevet lavet.
Prøv at søge i MSDN efter explicit template instantiation eller
sådan noget lignende.
Det er muligt at adskille definitionen og implementationen af
templatede funktioner. Jeg kan ikke på stående huske om det
gælder for member-template funktioner eller ej, men siden VC++ 5
har der været en ekstra mulighed for at skille tingene ad, og
det blev bedre i VC++ 6, hvor det faktisk virker.
Mvh
Asger Alstrup
| |
Rasmus Paulsen (05-02-2001)
| Kommentar Fra : Rasmus Paulsen |
Dato : 05-02-01 10:46 |
|
Hej
Jeg tror ikke at de har loest problemet med member templates endnu...
Jeg havde en fael lyst til at spoerge Gates om hvorfor de ikke kunne lave
deres udmaerkede C++ compiler bedre i stedet for at introducere C#,SOAP,.NET
etc...
Taenk at have known-bugs og overhovedet ikke goere noget ved dem i aarevis!
Hilsen
Rasmus
Soegning i MSDN gav foelgende resultat:
BUG: C2059 Error on Out-Of-Class Definition of Member Templates
----------------------------------------------------------------------------
----
The information in this article applies to:
The C/C++ Compiler (CL.EXE), included with:
Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0
----------------------------------------------------------------------------
----
SYMPTOMS
The following error message appears if you define a member template class or
function outside the class:
error C2059: syntax error : ''template<''
error C2065: 'T' : undeclared identifier
CAUSE
The compiler does not support out-of-class definition of member template
functions and classes. Please refer to the C++ Standard, section 14.5.2, for
information on member templates.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at
the beginning of this article.
MORE INFORMATION
Steps to Reproduce Behavior
The following code example demonstrates the error:
//test.cpp
// compiler option needed: none
template<class T> class string {
public:
template<class T2> int compare(const T2&);
template<class T2> string(const string<T2>& s) {} // inline definition OK
// ...
};
template <class T> template<class T2> int string<T>::compare(const T2& s)
// error C2059 and C2065
{
// ... // Out-of-class-definition
}
Additional query words:
Keywords : kbCompiler kbCPPonly kbLangCPP kbVC kbVC500 kbVC500bug kbVC600
kbVC600bug
Version : winnt:5.0,6.0
Platform : winnt
Issue type : kbbug
Technology : kbvc
Last Reviewed: February 4, 2000
"Asger K. Alstrup Nielsen" <alstrup@diku.dk> wrote in message
news:9426mn$sor@ask.diku.dk...
> "Rasmus Paulsen" <rasmus.r.paulsen@get2net.dk> writes:
>
> >VC++ 6.0 har endvidere problemer med member-template functions. Den kan
ikke
> >finde ud af det, hvis man definere funktionerne uden for headeren. Det er
en
> >known-bug, som aldrig er blevet lavet.
>
> Prøv at søge i MSDN efter explicit template instantiation eller
> sådan noget lignende.
> Det er muligt at adskille definitionen og implementationen af
> templatede funktioner. Jeg kan ikke på stående huske om det
> gælder for member-template funktioner eller ej, men siden VC++ 5
> har der været en ekstra mulighed for at skille tingene ad, og
> det blev bedre i VC++ 6, hvor det faktisk virker.
>
> Mvh
> Asger Alstrup
| |
|
|