C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

std::vector ersetzen durch std::deque

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Frans Fürst
Guest





PostPosted: Thu Feb 02, 2006 6:04 pm    Post subject: std::vector ersetzen durch std::deque Reply with quote



Hallo!

ich bin gerade dabei, in folgender Klasse die std::vector-Zeile durch ein
std::deque zu ersetzen, da die hier wohl besser passt:

class CSignal{

public:

[...]

protected:

/// Signalquellenbeschreibung
std::vector< CSignal > input;

[...]
};

mit dem gcc funktioniert das auch einwanfrei, mit VisualStudio 2003 bekomme
ich beim compilieren folgenden Fehler:

c:/Programme/MSVS.NET.2003/Vc7/include/deque(59) : error C2027: use of
undefined type 'CSignal'
c:/3D_SKETCHER/_LIBS/inputinterface/include/signal.h(37) : see
declaration of 'CSignal'
c:/3D_SKETCHER/_LIBS/inputinterface/include/signal.h(123) : see
reference to class template instantiation 'std::deque<_Ty>' being compiled
with
[
_Ty=CSignal
]

Kann mir da jemand sagen, was ich da falsch gemacht haben könnte, und wie
ich das wegbekomme?

Vielen Dank,

Frans

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Thomas Maeder
Guest





PostPosted: Thu Feb 02, 2006 8:02 pm    Post subject: Re: std::vector ersetzen durch std::deque Reply with quote



"Frans Fürst" <sendspamhere01 (AT) arcor (DOT) de> writes:

Quote:
ich bin gerade dabei, in folgender Klasse die std::vector-Zeile
durch ein std::deque zu ersetzen, da die hier wohl besser passt:

class CSignal{

public:

[...]

protected:

/// Signalquellenbeschreibung
std::vector< CSignal > input;

[...]
};

Dieser Code hat sowohl mit std::vector als auch mit std::deque
undefiniertes Verhalten. Templates aus Standardbibliothek dürfen nicht
mit inkompletten Typen instantiiert werden.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Stefan Reuther
Guest





PostPosted: Thu Feb 02, 2006 8:02 pm    Post subject: Re: std::vector ersetzen durch std::deque Reply with quote



Frans Fürst wrote:
[Schere benützt]
Quote:
ich bin gerade dabei, in folgender Klasse die std::vector-Zeile durch ein
std::deque zu ersetzen, da die hier wohl besser passt:

class CSignal{
/// Signalquellenbeschreibung
std::vector< CSignal > input;

mit dem gcc funktioniert das auch einwanfrei, mit VisualStudio 2003 bekomme
ich beim compilieren folgenden Fehler:

Die std::deque<T> von VS2003 wird wohl (Platz für) ein Objekt vom Typ T
reservieren wollen. Damit hat du indirekt die Situation, dass CSignal
ein Objekt vom Typ CSignal enthalten soll, was ja bekanntermaßen nicht
geht. Ob der das darf, finde ich jetzt auf die Schnelle nicht raus.

Als Workaround ist halt dynamischer Speicher angebracht. Entweder
std::deque<CSignal*>
oder
std::deque<CSignal>*
nebst entsprechender Behandlung.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Thomas Maeder
Guest





PostPosted: Thu Feb 02, 2006 11:01 pm    Post subject: Re: std::vector ersetzen durch std::deque Reply with quote

Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:

Quote:
Dieser Code hat sowohl mit std::vector als auch mit std::deque
undefiniertes Verhalten. Templates aus Standardbibliothek dürfen nicht
mit inkompletten Typen instantiiert werden.

Der Meinung bin ich ja auch, aber wo steht das?

ISO C++ Standard, §17.4.3.6

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Stefan Reuther
Guest





PostPosted: Thu Feb 02, 2006 11:01 pm    Post subject: Re: std::vector ersetzen durch std::deque Reply with quote

Thomas Maeder wrote:
Quote:
Dieser Code hat sowohl mit std::vector als auch mit std::deque
undefiniertes Verhalten. Templates aus Standardbibliothek dürfen nicht
mit inkompletten Typen instantiiert werden.

Der Meinung bin ich ja auch, aber wo steht das?

Klar, der Typ muss CopyConstructible sein. Aber muss er das zum
Zeitpunkt der Instanziierung der Klasse std::vector<T> zwecks
Größenbestimmung, oder zum Zeitpunkt der Instanziierung der verwendeten
Members?


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.