[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.c++

What's wrong using "template and inner class"

Hukkky

10/20/2008 5:19:00 PM

File : NodeList.h
//----------------------------------------------------------------------
#ifndef NODELIST_H
#define NODELIST_H
#include <string>
using std::string;

template <typename T>
class NodeList
{

public:
class Node
{
public:
Node* itsPrev;
Node* itsNext;
T* itsData;
};


public:
NodeList();
Node* SearchStr( string myStr );


private:
Node* itsHeader;
Node* itsTrailer;
};
#endif

---------------------------------------------------------



NodeList.cpp
//---------------------------------------------
#include "NodeList.h"

template<typename T>
NodeList<T>::NodeList()
{
size = 0;

this->itsHeader = new Node;
this->itsTrailer = new Node;

this->itsHeader->itsNext = this->itsTrailer;
this->itsTrailer->itsPrev = this->itsHeader;
}



template<typename T>
Node* NodeList<T>::SearchStr( string myStr )
{
//for test
return NULL;
}
//-------------------------------------


----------------------- complie message----------------
1>Compiling...
1>nodelist.cpp
1>d:\play ground\oop2 lec workspace
\e_library_test_2\e_library_test_2\nodelist.cpp(33) : error C2143:
syntax error : missing ';' before '*'
1>d:\play ground\oop2 lec workspace
\e_library_test_2\e_library_test_2\nodelist.cpp(33) : error C4430:
missing type specifier - int assumed. Note: C++ does not support
default-int
1>d:\play ground\oop2 lec workspace
\e_library_test_2\e_library_test_2\nodelist.cpp(33) : error C2065:
'T' : undeclared identifier
1>Build log was saved at "file://d:\Play Ground\OOP2 Lec Workspace
\e_library_test_2\e_library_test_2\Debug\BuildLog.htm"
1>e_library_test_2 - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
==========

-------------------------------------------------------------------

It's seems .. "definition of SearchStr function" is making this error.
but I can't find what I should fix. :(
Anyone knows what's wrong with this code.
2 Answers

Marcel Müller

10/20/2008 5:27:00 PM

0

Hi!

Hukkky wrote:
> NodeList.cpp
> //---------------------------------------------
> #include "NodeList.h"
>
> template<typename T>
> NodeList<T>::NodeList()
> {
> size = 0;
>
> this->itsHeader = new Node;
> this->itsTrailer = new Node;
>
> this->itsHeader->itsNext = this->itsTrailer;
> this->itsTrailer->itsPrev = this->itsHeader;
> }
>
>
>
> template<typename T>
> Node* NodeList<T>::SearchStr( string myStr )
> {
> //for test
> return NULL;
> }
> //-------------------------------------
>
>
> ----------------------- complie message----------------
> 1>Compiling...
> 1>nodelist.cpp
> 1>d:\play ground\oop2 lec workspace
> \e_library_test_2\e_library_test_2\nodelist.cpp(33) : error C2143:
> syntax error : missing ';' before '*'

Well, the above lines are probably not your code, since nodelist.cpp
does not have 33 lines.

However, most probably the line
> Node* NodeList<T>::SearchStr( string myStr )
is not valid, since there is not type called Node. However maybe you
mean Nodelist<T>::Node.


> It's seems .. "definition of SearchStr function" is making this error.
> but I can't find what I should fix. :(


Yep. See above.


Marcel

Hukkky

10/20/2008 5:34:00 PM

0

I see...
I changed as below and complies OK :)
thanks.

template<typename T>
typename NodeList<T>::Node* NodeList<T>::SearchStr( string myStr )
{
//for test
return NULL;
}