I did some searching online and i couldn't find anything in reference
to this.
I am using MinGW, gcc 4.3 and am having the following compilation
issue:
class CFoo
{
public:
...
private:
std::list<CFoom _children;
};
The complaint from the compiler looks like this:
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In instantiation of
'__gnu_cxx::_SG IAssignableConc ept<CFoo>':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo ,
std::allocator< CFoo'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:216: error:
'__gnu_cxx::_SG IAssignableConc ept<_Tp>::__a' has incomplete type
So, basically, I think what it's saying is that it doesn't know how to
build the class because CFoo hasn't been defined by the time it's
trying to create it (i.e. incomplete type). I tried adding
"std::list<clas s CFoo>" as well, but that didn't work either. This
compiles on visual studio with some warnings.
I can make this work by making it "std::list<CFoo *>", but I'm
wondering if there's a way to get this to work as defined.
thanks for listening.
-phil 22 2774 ph************* *@gmail.com wrote:
I did some searching online and i couldn't find anything in reference
to this.
I am using MinGW, gcc 4.3 and am having the following compilation
issue:
class CFoo
{
public:
...
private:
std::list<CFoom _children;
};
The complaint from the compiler looks like this:
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In instantiation of
'__gnu_cxx::_SG IAssignableConc ept<CFoo>':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo ,
std::allocator< CFoo'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:216: error:
'__gnu_cxx::_SG IAssignableConc ept<_Tp>::__a' has incomplete type
So, basically, I think what it's saying is that it doesn't know how to
build the class because CFoo hasn't been defined by the time it's
trying to create it (i.e. incomplete type). I tried adding
"std::list<clas s CFoo>" as well, but that didn't work either. This
compiles on visual studio with some warnings.
I can make this work by making it "std::list<CFoo *>", but I'm
wondering if there's a way to get this to work as defined.
thanks for listening.
All I can tell you is I've done this exact same thing in the past
successfully in both Microsoft Visual C++ .net 2003 and DevC++. Here is
something that compiles sucessfully in Microsoft Visual C++ .net 2003:
#include <list>
class CFoo
{
private:
std::list<CFoom _children;
};
int main()
{
CFoo Foo;
}
No warnings, no errors.
I don't know why your version of gcc is complaining, I don't think it
should, AFAIK this is perfectly legal, although I haven't read the standard
on it.
--
Jim Langston ta*******@rocke tmail.com
Here's exactly what i get when I try to compile that code:
C:\>type foo.cpp
#include <list>
class CFoo
{
private:
std::list<CFoom _children;
};
int main()
{
CFoo Foo;
}
C:\>gcc -v
Using built-in specs.
Target: i386-pc-mingw32
Configured with: ../gcc-4.3.0/configure --prefix=/mingw --disable-nls
--enable-languages=c,c++ ,fortran,objc,o bj-c++,ada,
java --disable-win32-registry --disable-sjlj-exceptions --enable-
libstdcxx-debug --enable-version-specific-runtime-libs
--with-gmp=/mingw/src/gcc/gmp-mpfr-root --with-mpfr=/mingw/src/gcc/gmp-
mpfr-root --enable-libgcj --enable-concept-checks
--enable-shared
Thread model: win32
gcc version 4.3.0 (GCC)
C:\>gcc -o foo foo.cpp
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In instantiation of '__gnu_cxx::_S
GIAssignableCon cept<CFoo>':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo , std:
:allocator<CFoo '
foo.cpp:6: instantiated from here
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:216: error: '__gnu_cxx::_SG IAssigna
bleConcept<_Tp> ::__a' has incomplete type
foo.cpp:4: error: forward declaration of 'class CFoo'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In member function 'void __gnu_cxx
::_SGIAssignabl eConcept<_Tp>:: __constraints() [with _Tp = CFoo]':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo , std:
:allocator<CFoo '
foo.cpp:6: instantiated from here
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:208: error: using invalid field '__
gnu_cxx::_SGIAs signableConcept <_Tp>::__a'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:209: error: using invalid field '__
gnu_cxx::_SGIAs signableConcept <_Tp>::__a'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:209: error: using invalid field '__
gnu_cxx::_SGIAs signableConcept <_Tp>::__a'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo , std:
:allocator<CFoo '
foo.cpp:6: instantiated from here
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:210: error: using invalid field '__
gnu_cxx::_SGIAs signableConcept <_Tp>::__a'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In member function 'void __gnu_cxx
::_SGIAssignabl eConcept<_Tp>:: __const_constra ints(const _Tp&) [with
_Tp = CFoo]':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:210: instantiated from 'void __gn
u_cxx::_SGIAssi gnableConcept<_ Tp>::__constrai nts() [with _Tp = CFoo]'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: instantiated from 'std::list<CFoo , std:
:allocator<CFoo '
foo.cpp:6: instantiated from here
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:214: error: using invalid field '__
gnu_cxx::_SGIAs signableConcept <_Tp>::__a'
C:\> ph************* *@gmail.com wrote:
Here's exactly what i get when I try to compile that code:
C:\>type foo.cpp
#include <list>
class CFoo
{
private:
std::list<CFoom _children;
};
int main()
{
CFoo Foo;
}
C:\>gcc -o foo foo.cpp
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In instantiation of '__gnu_cxx::_S
GIAssignableCon cept<CFoo>':
<snip>
Looks like your compiler isn't configured correctly, try a gcc group.
--
Ian Collins.
On Apr 28, 7:33*pm, "Jim Langston" <tazmas...@rock etmail.comwrote :
phil.pellouch.. .@gmail.com wrote:
I did some searching online and i couldn't find anything in reference
to this.
I am using MinGW, gcc 4.3 and am having the following compilation
issue:
class CFoo
{
public:
* *...
private:
* *std::list<CFoo m_children;
};
The complaint from the compiler looks like this:
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h: In instantiation of
'__gnu_cxx::_SG IAssignableConc ept<CFoo>':
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
stl_list.h:420: * instantiated from 'std::list<CFoo ,
std::allocator< CFoo'
c:\mingw\bin\../lib/gcc/i386-pc-mingw32/4.3.0/include/c++/bits/
boost_concept_c heck.h:216: error:
'__gnu_cxx::_SG IAssignableConc ept<_Tp>::__a' has incomplete type
So, basically, I think what it's saying is that it doesn't know how to
build the class because CFoo hasn't been defined by the time it's
trying to create it (i.e. incomplete type). *I tried adding
"std::list<clas s CFoo>" as well, but that didn't work either. *This
compiles on visual studio with some warnings.
I can make this work by making it "std::list<CFoo *>", but I'm
wondering if there's a way to get this to work as defined.
thanks for listening.
All I can tell you is I've done this exact same thing in the past
successfully in both Microsoft Visual C++ .net 2003 and DevC++. *Here is
something that compiles sucessfully in Microsoft Visual C++ .net 2003:
#include <list>
class CFoo
{
private:
* * std::list<CFoom _children;
};
int main()
{
* * CFoo Foo;
}
No warnings, no errors.
I don't know why your version of gcc is complaining, I don't think it
should, AFAIK this is perfectly legal, although I haven't read the standard
on it.
IMO gcc is correct. You could have a list of pointers or refs to CFoo
but not recursive types. One workaround *may* be to use a typedef
alias for CFoo. That may fool gcc, but I think its technically correct
to call this an error.
regards
Andy Little
kwikius wrote:
On Apr 28, 7:33 pm, "Jim Langston" <tazmas...@rock etmail.comwrote :
>All I can tell you is I've done this exact same thing in the past successfully in both Microsoft Visual C++ .net 2003 and DevC++. Here is something that compiles sucessfully in Microsoft Visual C++ .net 2003:
#include <list>
class CFoo { private: std::list<CFoom _children;
};
int main() { CFoo Foo;
}
No warnings, no errors.
I don't know why your version of gcc is complaining, I don't think it should, AFAIK this is perfectly legal, although I haven't read the standard on it.
IMO gcc is correct. You could have a list of pointers or refs to CFoo
but not recursive types. One workaround *may* be to use a typedef
alias for CFoo. That may fool gcc, but I think its technically correct
to call this an error.
Why? The class declares m_children to be a list of CFoo. It does not
attempt to use any members of std::list that require a complete type.
In effect, it's just like writing
#include <list>
class X;
class CFoo
{
private:
std::list<Xm_ch ildren;
};
class X {};
int main()
{
CFoo Foo;
}
The complete class definition is not required until std::list's default
constructor is instantiated in main().
--
Ian Collins.
"Ian Collins" <ia******@hotma il.comwrote in message
news:67******** *****@mid.indiv idual.net...
kwikius wrote:
>On Apr 28, 7:33 pm, "Jim Langston" <tazmas...@rock etmail.comwrote :
>>All I can tell you is I've done this exact same thing in the past successfull y in both Microsoft Visual C++ .net 2003 and DevC++. Here is something that compiles sucessfully in Microsoft Visual C++ .net 2003:
#include <list>
class CFoo { private: std::list<CFoom _children;
};
int main() { CFoo Foo;
}
No warnings, no errors.
I don't know why your version of gcc is complaining, I don't think it should, AFAIK this is perfectly legal, although I haven't read the standard on it.
IMO gcc is correct. You could have a list of pointers or refs to CFoo but not recursive types. One workaround *may* be to use a typedef alias for CFoo. That may fool gcc, but I think its technically correct to call this an error.
Why? The class declares m_children to be a list of CFoo. It does not
attempt to use any members of std::list that require a complete type.
Ah as to Why ... I Dunno. Hopefully someone of a more technical nature will
help out as to why. From the error messages gcc is using C++0x style Concept
checking.
Various things to try to diagnose the problem. Try some other dummy template
class than std::list.
If that succeeds then std::list is concept checking and wont allow itself to
be instantiated without a complete type or some such
There is presumably an option to turn it off . ..
regards
Andy Little
kwikius wrote:
"Ian Collins" <ia******@hotma il.comwrote:
>>>
Why? The class declares m_children to be a list of CFoo. It does not attempt to use any members of std::list that require a complete type.
Ah as to Why ... I Dunno. Hopefully someone of a more technical nature will
help out as to why. From the error messages gcc is using C++0x style Concept
checking.
It does, doesn't it? I thought that was a little odd, I didn't think
gcc had built in boost libraries.
--
Ian Collins.
"Ian Collins" <ia******@hotma il.comwrote in message
news:67******** *****@mid.indiv idual.net...
kwikius wrote:
>"Ian Collins" <ia******@hotma il.comwrote:
>>>> Why? The class declares m_children to be a list of CFoo. It does not attempt to use any members of std::list that require a complete type.
Ah as to Why ... I Dunno. Hopefully someone of a more technical nature will help out as to why. From the error messages gcc is using C++0x style Concept checking.
It does, doesn't it? I thought that was a little odd, I didn't think
gcc had built in boost libraries.
Ahha yes its not C++0x Concepts, its old style concept checking . Theres
bound to be an option to turn that off.
Probbably a macro somewhere
Its all legit AFAIK.
After all std::list may want to for example instantiate some private
template type of allocate<sizeof (T)>
when its constructed for which it would obviously need the complete type.
regards
Andy Little
"Jim Langston" <ta*******@rock etmail.comwrote in message
news:9S******** ********@newsfe 05.lga...
Ian Collins wrote:
>kwikius wrote:
>>"Ian Collins" <ia******@hotma il.comwrote: > Why? The class declares m_children to be a list of CFoo. It does not attempt to use any members of std::list that require a complete type.
Ah as to Why ... I Dunno. Hopefully someone of a more technical nature will help out as to why. From the error messages gcc is using C++0x style Concept checking.
It does, doesn't it? I thought that was a little odd, I didn't think gcc had built in boost libraries.
That had thrown me off also, the boost error messages on something that
has nothing to do with boost. I wonder if it's some compiler switch?
FWIW following gives something similar. The trick is to make some
dependency, which must be going on in the O.P.
#include <list>
template<typena me T>
struct dummy : T{ };
struct CFoo {
dummy<CFoomy_li st;
};
int main()
{
CFoo foo;
} This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Gaurav Veda |
last post by:
Hi !
I am a poor mortal who has become terrified of Python. It seems to
have thrown all the OO concepts out of the window. Penniless, I ask a
basic question :
What is the difference between a class and a function in Python ???
Consider the following code fragments :
# Fragment 1 begins
a = 1
|
by: Daniel |
last post by:
Hello =)
I have an object which contains a method that should execute every x ms. I
can use setInterval inside the object construct like this -
self.setInterval('ObjectName.methodName()', this.pinginterval);
- but is there no way to do this without using the literal ObjectName? If I
write 'this.methodName()' I get "Line 1 Char 1: Object...
|
by: Bryan Parkoff |
last post by:
I know how to write "Pointer to Function" inside struct or class without
using static, but I have decided to add static to all functions inside
struct or class because I want member functions to be bound inside struct or
class to become global functions. It makes easier for me to use
"struct.memberfunction()" instead of "globalfunction()"...
|
by: Pranav Shah |
last post by:
What is the differrence between using the "using" caluse outside of the
namespace definition and inside the namespace.
Example Outside:
using System;
namespace Example.Outside
{
}
|
by: AK |
last post by:
I'm using a .NET Windows Forms Applications project.
I'm using LoadLibrary & GetProcAddress to use a DLL function.
This is all done in the main cpp file.
I would like to use this DLL function in a .h file. So I code :
(Proc2) (0x378, 12)....... (where Proc2 is the function)
I get a compiler error : C2065 : 'Proc2' : undeclared identifier....
| |
by: |
last post by:
Today I learned that creating cookies inside of a custom class in ASP.NET
2.0 requires that you prefix it with HttpContext.Current..., e.g. :
HttpContext.Current.Response.Cookies.Add("myNewCookie");
I am wondering if there are any landmines that I should know about, or if
this will work pretty much as I am expecting a cookie should.
|
by: Luke |
last post by:
Hi.
I am trying to make correct layout, here is an example of (dynamically
generated content via jsp):
http://localhost/www/layout.htm
Most outer div is positioned absolute (if not then it will not grow
when content inside div.body is greater than width of window of user
agent), anyway anyone knowlegable can see it in sources...
|
by: Lambuz |
last post by:
First of all, is it possible usign .NET remoting feature inside a .NET
applet loaded into a tag object inside an HTML page ?
<OBJECT id="myID" height="150" width="300"
classid="http:applet.dll#test.applet"</OBJECT>
If not please can anyone explain why ?
I think yes and so I'd written a small example immediately I've met a
problem.
|
by: Arjen |
last post by:
Hi,
Form a performance perspective, is it wise to use the ref statement as much
as possible?
Thanks!
Arjen
|
by: raylopez99 |
last post by:
KeyDown won't work KeyPress fails KeyDown not seen
inspired by a poster here:http://tinyurl.com/62d97l I found some
interesting stuff, which I reproduce below for newbies like me.
The main reason you would want to do this is for example to trigger
something from an OnPaint event without resorting to boolean switches--
say if a user...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
| |
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |