Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > expected constructor, destructor, or type conversion before '*'

Reply
Thread Tools

expected constructor, destructor, or type conversion before '*'

 
 
Preben
Guest
Posts: n/a
 
      09-20-2006
Hi,

I get this error when trying to compile:
--------
# g++ -c KGreyImage.cpp
KGreyImage.cpp:25: error: expected constructor, destructor, or type
conversion before '*' token
--------


and the code is given here:
--------
#include <vector>

/** defines fuer Funktion KGreyImage<T>::edges(), geben an, was nach der
Berechnung des Gradientenbetrags
// noch alles gemacht werden soll
*/
#define SUPPRESS_NONMAXIMA 1
#define DOUBLE_THRESHOLDING 2
#define CANNY 3

template<class T> class KGreyImage {

private:

/** diese structs werden von ::findDots() benoetigt*/
struct point {
double x;
double y;
double mindist[5];
int neighbor[5];
int direction[4];
bool inGrid;
};

struct lrud {
double x;
double y;
int index;
};


public:

KGreyImage();
KGreyImage(unsigned int cols, unsigned int rows);
KGreyImage(KGreyImage<T>* pImage);
KGreyImage(KGreyImage<T> &pImage);
KGreyImage(const KGreyImage<T> &pImage);


KGreyImage(T* pImage, unsigned int cols, unsigned int rows);

KGreyImage( std::vector<T> zeile, char orient = 'x' );

struct dotOutput {
/** Position in Grid-Koordinaten */
double gx, gy;
/** Position in Bild-Koordinaten */
double ix, iy;
};

/** Dotliste finden; stuerzt mit "Segmentation fault" ab, wenn im
Bild noch
weitere Daten als nur das Punktmuster enthalten sind
Parameter gibt den ungefaehren horizontalen Abstand zwischen
benachbarten
Punkten an */
dotOutput* findDots(const int distExpect, int& dotCount) const;
};



template<class T>
KGreyImage<T>::KGreyImage() {}

template<class T>
KGreyImage<T>::KGreyImage(unsigned int cols, unsigned int rows) {}

template<class T>
KGreyImage<T>::KGreyImage(const KGreyImage<T>& pImage) {}

template<class T>
KGreyImage<T>::KGreyImage(KGreyImage<T>& pImage) {}

template<class T>
KGreyImage<T>::KGreyImage(KGreyImage<T>* pImage) {}

template<class T>
KGreyImage<T>::dotOutput * KGreyImage<T>::findDots(const int distExpect,
int& dotCount) const {
dotOutput* dotList = new dotOutput[dotCount];
return dotList;
}
--------


Why does gcc 4.1.1 expect a constructor in front of the *?
It should just return a pointer to the new array of dotOutput's!



Thanks in advance

Preben
 
Reply With Quote
 
 
 
 
Krishanu Debnath
Guest
Posts: n/a
 
      09-20-2006
Preben wrote:
> Hi,
>
> I get this error when trying to compile:
> --------
> # g++ -c KGreyImage.cpp
> KGreyImage.cpp:25: error: expected constructor, destructor, or type
> conversion before '*' token


<snip>

>
>
> Why does gcc 4.1.1 expect a constructor in front of the *?
> It should just return a pointer to the new array of dotOutput's!


Looks like a gcc bug. Try gcc newsgroup.

Krishanu
 
Reply With Quote
 
 
 
 
Earl Purple
Guest
Posts: n/a
 
      09-20-2006

Preben wrote:
> Hi,
>
> I get this error when trying to compile:
> --------
> # g++ -c KGreyImage.cpp
> KGreyImage.cpp:25: error: expected constructor, destructor, or type
> conversion before '*' token
> --------
>
>
> and the code is given here:

<snip>

It would be easier if you told us which is line 25.

 
Reply With Quote
 
Greg
Guest
Posts: n/a
 
      09-20-2006
Preben wrote:
> Hi,
>
> I get this error when trying to compile:
> --------
> # g++ -c KGreyImage.cpp
> KGreyImage.cpp:25: error: expected constructor, destructor, or type
> conversion before '*' token
> --------
>
>
> and the code is given here:
> --------
> #include <vector>
>
>
> template<class T>
> KGreyImage<T>::dotOutput * KGreyImage<T>::findDots(const int distExpect,
> int& dotCount) const {
> dotOutput* dotList = new dotOutput[dotCount];
> return dotList;


Within a class or function template, it is necessary label (with the
"typename" keyword) any name-dependent type, such as "dotOutput". So in
this case, the findDots function template declaration should be:

template<class T>
typename KGreyImage<T>::dotOutput *
KGreyImage<T>::findDots(const int distExpect, int& dotCount) const
{
dotOutput* dotList = new dotOutput[dotCount];
return dotList;
}

in order for it to compile.

Greg

 
Reply With Quote
 
Preben
Guest
Posts: n/a
 
      09-20-2006
> Within a class or function template, it is necessary label (with the
> "typename" keyword) any name-dependent type, such as "dotOutput". So in
> this case, the findDots function template declaration should be:
>
> template<class T>
> typename KGreyImage<T>::dotOutput *
> KGreyImage<T>::findDots(const int distExpect, int& dotCount) const
> {
> dotOutput* dotList = new dotOutput[dotCount];
> return dotList;
> }
>
> in order for it to compile.


Thanks...

I'll try to do that and see if that works (doesn't have the code on this
computer).


/ Preben
 
Reply With Quote
 
Greg
Guest
Posts: n/a
 
      09-20-2006

Preben wrote:
> > Within a class or function template, it is necessary label (with the
> > "typename" keyword) any name-dependent type, such as "dotOutput". So in
> > this case, the findDots function template declaration should be:
> >...
> > in order for it to compile.

>
> Thanks...
>
> I'll try to do that and see if that works (doesn't have the code on this
> computer).


Well in the interests of not prolonging the suspense, I will reveal
that I have already compiled your code (at least the part you posted)
with my fix on my computer and did so successfully.

Now, I will say that I had much more trouble understanding the
comments. The spelling is simply atrocious.

Greg

ps. oh,

 
Reply With Quote
 
Preben
Guest
Posts: n/a
 
      09-20-2006
Greg wrote:
> Preben wrote:
>>> Within a class or function template, it is necessary label (with the
>>> "typename" keyword) any name-dependent type, such as "dotOutput". So in
>>> this case, the findDots function template declaration should be:
>>> ...
>>> in order for it to compile.

>> Thanks...
>>
>> I'll try to do that and see if that works (doesn't have the code on this
>> computer).

>
> Well in the interests of not prolonging the suspense, I will reveal
> that I have already compiled your code (at least the part you posted)
> with my fix on my computer and did so successfully.
>
> Now, I will say that I had much more trouble understanding the
> comments. The spelling is simply atrocious.
>
> Greg


Oh, just found out that I hadn't removed all the german comments.

And to reveal that I didn't write the code either - I'm just trying to
make the 8 years of work compile on my gentoo workstation where I
haven't got the possibility to go with gcc 3.3, which is the only
compiler that the code compiles with!
It's really a problem when every part of the code doesn't compile, files
are many thousand lines and probably around 50 errors in each ;-(


/ Preben
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Error: expected constructor, destructor or type conversion before '(' token suse Software 0 03-09-2009 03:25 AM
expected constructor, destructor, or type conversion before mhubbard C++ 0 04-04-2008 07:14 PM
error: expected constructor, destructor, or type conversion before '<' token amitmool@gmail.com C++ 5 11-05-2007 01:56 PM
Expected constructor, destructor or type conversion before... algatt C++ 2 07-19-2007 07:45 PM
"expected constructor, destructor, or type conversion before '->' token" using a Singleton Damien C++ 5 12-13-2006 12:39 AM



Advertisments