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

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

P: n/a
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 Tclass 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<Tzeile, 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
Sep 20 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a

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.

Sep 20 '06 #2

P: n/a
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

Sep 20 '06 #3

P: n/a
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
Sep 20 '06 #4

P: n/a

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, :-)

Sep 20 '06 #5

P: n/a
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
Sep 20 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.