467,896 Members | 1,363 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,896 developers. It's quick & easy.

What's wrong using "template and inner class"

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.
Oct 20 '08 #1
  • viewed: 1777
Share:
2 Replies
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
Oct 20 '08 #2
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;
}
Oct 20 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

10 posts views Thread by Average_Joe | last post: by
10 posts views Thread by Lionel B | last post: by
5 posts views Thread by Jacky Yuk | last post: by
2 posts views Thread by Rudy Ray Moore | last post: by
9 posts views Thread by Kobe | last post: by
3 posts views Thread by Pierre Barbier de Reuille | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.