[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: general c++ question
From: |
Michael Goffioul |
Subject: |
Re: general c++ question |
Date: |
Sat, 30 Jun 2007 09:19:00 +0200 |
On 6/30/07, Shai Ayal <address@hidden> wrote:
This is a general c++ question, but I came upon it while trying to
patch octave, so I figured I'll try asking here:
I want to declare a function returning the figure::figure_properties
class. This function will have to be declared before
figure::figure_properties is declared. This is usually done using
forward declarations -- i.e. I would expect he following to work:
class figure;
class figure::figure_properties;
figure::figure_properties test();
however gcc comes back with the error:
'figure_properties' in class 'figure' does not name a type
for both lines where figure::figure_properties is mentioned. Trying
the following also does not work:
class figure;
class figure_properties;
figure::figure_properties test();
with the same error where figure::figure_properties is mentioned.
any ideas besides moving figure_properties outside figure?
I'm not sure this is the actual problem you get (and I'm not a C++ expert),
but I think that you can only deal with pointers to forward-declared classes,
because the compiler does not know the object size when you use it.
For example:
class A;
A test(); /* probably not OK */
A* test(); /* OK */
In your case, you have the additional problem to forward-declare nested
classes; I've never tried that.
Michael.