public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Jörgen Sigvardsson <jorgen.sigvardsson@kau.se> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: c++/3024: class inheritance of template arguments fail Date: Fri, 01 Jun 2001 04:36:00 -0000 [thread overview] Message-ID: <20010601113601.5369.qmail@sourceware.cygnus.com> (raw) [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain, Size: 3151 bytes --] The following reply was made to PR c++/3024; it has been noted by GNATS. From: =?iso-8859-1?q?J=F6rgen=20Sigvardsson?= <jorgen.sigvardsson@kau.se> To: "Artem Khodush" <artem@duma.gov.ru> Cc: <gcc-gnats@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org> Subject: Re: c++/3024: class inheritance of template arguments fail Date: Fri, 1 Jun 2001 14:39:07 +0200 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 01 June 2001 12:15, Artem Khodush wrote: > > Classes may not inherit from template argument. I use this with > > the Microsoft Visual C++ compiler frequently (ATL uses it heavily). > > I don't know if this is C++ by the book, or if it is a Microsoft > > extension. > > > > The code which fail for me looks like: > > > > template <typename T> > > class Y : public T > > { > > // ... > > }; > > > > class X : public Y<X> > > { > > }; > > Your code does not compile with Visual C++ 6.0. > The error message is pretty much the same: > > c:\m\t\main.cpp(4) : error C2504: 'X' : base class undefined > > This has nothing to do with inheriting from template argument. > You want to have a class which indirectly inherits from itself, > this is impossible in C++. I beg to differ. Check out this page: http://msdn.microsoft.com/library/devprods/vs6/visualc/vcmfc/_atl_ccomobject.htm (I'll cite the text here, since the page does not load correctly with Netscape 4.x - I wonder why? :) - ----- BEGIN ----- CComObject template< class Base > class CComObject : public Base Parameters Base Your class, derived from CComObjectRoot or CComObjectRootEx, as well as from any other interfaces you want to support on the object. CComObject implements IUnknown for a nonaggregated object. However, calls to QueryInterface, AddRef, and Release are delegated to CComObjectRootEx. - ----- END ----- When you create an ATL COM-object, you inherit from this class like: class ATL_NO_VTABLE MyClass : public CComObject<MyClass> { // ... }; (ATL_NO_VTABLE is a M$-specific thing - this may perhaps be the thing that makes this possible? - if you want to investigate, then atlcom.h may be a good starting point) At any rate, this is perfectly legal. This kind of stuff is quite neat, since it allows you to very generic coding. You can make boiler plate code go away (joy! - In this case, the programmer is relieved of implementing the IUnknown interface). If this is a microsoft extension, then g++ should probably not implement it. But if it is legal C++, then this feature would be very handy indeed. I can see several KDE/KPart-extensions that would relieve the programmer from a lot of boiler plate code. (I'm not subscribed to any gcc-mailinglist, so if you respond to the list, please make sure to CC me) - -- Jörgen Sigvardsson, B. Sc. Lecturer, Computer Science Dept. Karlstad University Tel: +46-(0)54-700 1786 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.4 (FreeBSD) Comment: For info see http://www.gnupg.org iD8DBQE7F4zsJtcD8rikkmwRAjiVAJwKNr8+uFPzxut1JR5rjq4A6KwHAQCfeCf3 evDjxl7Rn5YDv0UmDdfRUnU= =4DlK -----END PGP SIGNATURE-----
next reply other threads:[~2001-06-01 4:36 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2001-06-01 4:36 Jörgen Sigvardsson [this message] -- strict thread matches above, loose matches on Subject: below -- 2001-06-01 3:26 Artem Khodush 2001-06-01 1:36 jorgen.sigvardsson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20010601113601.5369.qmail@sourceware.cygnus.com \ --to=jorgen.sigvardsson@kau.se \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).