Problem with inner classes and Templates

A

alexroat

Hi, when I'm trying to compile this code with gcc 4 I get this strange
error :

alex@deimos:~/Desktop/Image$ make -k Image
g++ Image.cpp -o Image
Image.cpp:29: error: expected initializer before 'Image'
make: *** [Image] Error 1


The code of the source of Image.cpp is the following:

#include <string>
#include <map>

class A {
private:
typedef std::map<std::string, int> maptype_t;

static const maptype_t _mapconst;
static maptype_t _init_mapconst();

}

inline A::maptype_t
A::_init_mapconst() // line 15
{
maptype_t m;
m["aaa"] = 23;
m["acb"] = 42;
return m;

}

const A::maptype_t
A::_mapconst =
A::_init_mapconst();

int main()
{

}

The problem seems to be not present if I remove the template leaving
as a common class the Image one. I think it's due by the fact that
compiler cannot predict the form of Handler before it has not been
istantiated ... but I'm not sure ... could you help me ?

Is a solution to templatizate also the Handler class and moreover move
it outside the Image class ?

Thank you in advance.

Alessandro
 
A

Alf P. Steinbach

* (e-mail address removed):
Hi, when I'm trying to compile this code with gcc 4 I get this strange
error :

alex@deimos:~/Desktop/Image$ make -k Image
g++ Image.cpp -o Image
Image.cpp:29: error: expected initializer before 'Image'
make: *** [Image] Error 1


The code of the source of Image.cpp is the following:

#include <string>
#include <map>

class A {
private:
typedef std::map<std::string, int> maptype_t;

static const maptype_t _mapconst;
static maptype_t _init_mapconst();

}

inline A::maptype_t
A::_init_mapconst() // line 15
{
maptype_t m;
m["aaa"] = 23;
m["acb"] = 42;
return m;

}

const A::maptype_t
A::_mapconst =
A::_init_mapconst();

int main()
{

}


1. The error message refers to a line 29, you have singled out line 15.

2. The error message refers to an identifier 'Image', there's no such
identifier in the presented code.

The problem seems to be not present if I remove the template leaving
as a common class the Image one.

3. There's no template definition in the presented code.

I think it's due by the fact that
compiler cannot predict the form of Handler before it has not been
istantiated ... but I'm not sure ... could you help me ?

4. There's no identifier 'Handler' in the presented code.

Is a solution to templatizate also the Handler class and moreover move
it outside the Image class ?

5. Post the code.
 
A

alexroat

* (e-mail address removed):


Hi, when I'm trying to compile this code with gcc 4 I get this strange
error :
alex@deimos:~/Desktop/Image$ make -k Image
g++ Image.cpp -o Image
Image.cpp:29: error: expected initializer before 'Image'
make: *** [Image] Error 1
The code of the source of Image.cpp is the following:
#include <string>
#include <map>
class A {
private:
typedef std::map<std::string, int> maptype_t;
static const maptype_t _mapconst;
static maptype_t _init_mapconst();

inline A::maptype_t
A::_init_mapconst() // line 15
{
maptype_t m;
m["aaa"] = 23;
m["acb"] = 42;
return m;

const A::maptype_t
A::_mapconst =
A::_init_mapconst();
int main()
{

1. The error message refers to a line 29, you have singled out line 15.

2. The error message refers to an identifier 'Image', there's no such
identifier in the presented code.
The problem seems to be not present if I remove the template leaving
as a common class the Image one.

3. There's no template definition in the presented code.
I think it's due by the fact that
compiler cannot predict the form of Handler before it has not been
istantiated ... but I'm not sure ... could you help me ?

4. There's no identifier 'Handler' in the presented code.
Is a solution to templatizate also the Handler class and moreover move
it outside the Image class ?

5. Post the code.

--
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?

Sorry I posted the wrong code ... now you can see the correct one ...

TY
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top