By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,159 Members | 943 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,159 IT Pros & Developers. It's quick & easy.

Getting an Errror ...

P: n/a
pai
#include<iostream.h>

struct ab{
int a;
};

template <class T>
class A{

struct ab * ret_1();

public:
A();
void disp();
void ret();

};

template <class T>
void A<T>::ret(){

struct ab* b;
b=ret_1();

return b;
}

template <class T>
struct ab * A<T>::ret_1(){

struct ab* b;
b=new (struct ab);

return b;

}

template<class T>
A<T>::A(){

cout << "A const" ;

}

template <class T>
void A<T>::disp(){
cout << "disp" << endl;
}

int main(){
A<int> a;
a.disp();

return 0;
}

*******************************************
--------------------Configuration: test - Win32
Debug--------------------
Compiling...
test.cpp
C:\Pai\c++\linked-list\test.cpp(28) : error C2989: 'ab' : template
class has already been defined as a non-template class
C:\Pai\c++\linked-list\test.cpp(3) : see declaration of 'ab'
C:\Pai\c++\linked-list\test.cpp(28) : error C2143: syntax error :
missing ';' before '*'
C:\Pai\c++\linked-list\test.cpp(28) : error C2065: 'T' : undeclared
identifier
C:\Pai\c++\linked-list\test.cpp(28) : error C2955: 'A' : use of class
template requires template argument list
C:\Pai\c++\linked-list\test.cpp(16) : see declaration of 'A'
C:\Pai\c++\linked-list\test.cpp(28) : error C2501: 'ret_1' : missing
storage-class or type specifiers
C:\Pai\c++\linked-list\test.cpp(28) : error C2556: 'int *__thiscall
A::ret_1(void)' : overloaded function differs only by return type from
'struct ab *__thiscall A<T>::ret_1(void)'
C:\Pai\c++\linked-list\test.cpp(10) : see declaration of
'ret_1'
C:\Pai\c++\linked-list\test.cpp(28) : error C2371: 'ret_1' :
redefinition; different basic types
C:\Pai\c++\linked-list\test.cpp(10) : see declaration of
'ret_1'
C:\Pai\c++\linked-list\test.cpp(54) : error C2079: 'a' uses undefined
class 'A<int>'
C:\Pai\c++\linked-list\test.cpp(56) : error C2228: left of '.disp' must
have class/struct/union type
Error executing cl.exe.

test.obj - 9 error(s), 0 warning(s)

***************************************

How could I write the priviate function which return a structure
pointer . The error come when I changed the class to a template class.
How to remove this error.

Thanks
Pai

Jun 28 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a
* pai:
#include<iostream.h>
Non-standard header. Use <iostream>.
struct ab{
int a;
};

template <class T>
class A{

struct ab * ret_1();
Remove the word 'struct' since it's redundant.

public:
A();
void disp();
void ret();

};

template <class T>
void A<T>::ret(){

struct ab* b;
Remove the word 'struct' since it's redundant.

b=ret_1();

return b;
Can't return a value from a void function.
}

template <class T>
struct ab * A<T>::ret_1(){
Remove the word 'struct' since it's parsed as the start of a 'struct'
declaration (at least by your compiler).


struct ab* b;
Remove the word 'struct' since it's redundant.

b=new (struct ab);
Remove the word 'struct' since it's redundant.


return b;

}

template<class T>
A<T>::A(){

cout << "A const" ;

}

template <class T>
void A<T>::disp(){
cout << "disp" << endl;
}

int main(){
A<int> a;
a.disp();

return 0;
}


--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Jun 28 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.