Re: Error when returning a structure pointer
In article <1151471069.719412.29090@d56g2000cwd.googlegroups.com>, pai
<grpai1@yahoo.com> writes
Hi ,
The following program gives error can any one solve this.
#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(){
The above line confuses the compiler. You have used a C'ism by using the
keyword 'struct'. I am not sure whether C++ actually prohibits its use
in this context but I am not surprised that a compiler would be confused
by its, at best redundant, use.
struct ab* b;
b=new (struct ab);
return b;
}
C++ struct names are type names and do not need to be proceeded by
'struct'. Sometimes it is still OK in C++ as a mechanism for unhiding a
name that would otherwise be hidden by a later declaration but even that
should be avoided. If you need to deal with a C compatibility issue,
then use a typedef.
General comment: See how learning C first can cause problems in writing
good idiomatic C++?
--
Francis Glassborow ACCU
Author of 'You Can Do It!' and "You Can Program in C++"
see http://www.spellen.org/youcandoit
For project ideas and contributions:
http://www.spellen.org/youcandoit/projects
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]