Adjektiv zu Template

#1674694
Lesenswert?

Hi, wollte mal fragen wie denn das Adjektiv zu Templates heißt (auf 
englisch templated)??? Templatisiert?!? Bei google findet man das zwar 
öfter, aber irgendwie finde ich, dass sich das doch sehr nach Denglisch 
anhört. Schreibe gerade meine Masterthesis und finde das hört sich 
irgendwie nicht wirklich wissenschaftlich an. Habt ihr bessere 
Vorschläge?!

Es geht vor allem um den Satz:

Dass die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW nicht auch über 
den Konstruktor übergeben werden, liegt an der Gegebenheit, dass diese 
bei der Deklaration der templatisierten Socketinstanzen vom Typ 
simple_target_socket_tagged und simple_initiator_socket_tagged vom 
Präprozessor benötigt werden.

Macht der Satz so überhaupt Sinn für einen Außenstehenden? Ich weiß 
persönlich halt was ich meine, aber ob das jmd anderes versteht?

Bin für alle Vorschläge dankbar!

Gruß
#1674756
Lesenswert?

> liegt an der Gegebenheit
wie ist denn so die Gegebenheit? Eckig, rund, etwas wie eine Wiese oder 
doch eine Mauer? Hast du die verlötet?

Würd' mal so vorschlagen:
Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden nicht über
den Konstruktor übergeben werden, sondern bei der Deklaration der 
Socketinstanzen. ....
#1674760
Lesenswert?

Hi, danke schon mal für eure Tips. Okay templatebasiert hört sich doch 
schon einiges besser an :)

@ Klaus, ja da muss ich dir zustimmen. Habe gerade beim Durchlesen auch 
gedacht, dass da ziemlich viel Information in einem Satz steckt.

So besser? :

Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen 
nicht über den Konstruktor übergeben, da sie schon bei der Deklaration 
der templatebasierten Socketinstanzen vom Präprozessor benötigt werden.

Gruß
Stefan
#1674769
Lesenswert?

Das "hingegen" schreit nach einem "sondern", etwa:

Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen
nicht über den Konstruktor übergeben, sondern schon bei [....], da sie 
der Präprozessor bei der Deklaration der templatebasierten 
Socketinstanzen benötigt.
#1674776
Lesenswert?

@ Zwie: Danke auch für den Tip! Hm davor beschreibe ich eben die 
restlichen Parameter, die alle in einer Struktur gekapselt über den 
Konstruktor übergeben werden. Nun will ich halt erklären, warum 
ausgerechnet diese vier Variablen mit Templates definiert werden. 
Deshalb halt das hingegen...

Aber gut glaub das hingegen kann ich auch einfach weglassen. glaube dann 
müsste es so einigermaßen passen.
#1674875
Lesenswert?

Zwie Blum schrieb:
> Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen
> nicht über den Konstruktor übergeben, sondern schon bei [....], da sie
> der Präprozessor bei der Deklaration der templatebasierten
> Socketinstanzen benötigt.

Das ist fachlich falsch! Zzumindest, wenn es um c++ geht.
Da hat der Präprozessor mit Templates nichts zu tun, das ist Sache des 
Kompilers.
#1675420
Lesenswert?

S. F. schrieb:
> @ Vlad
>
> Ja es geht um C++. Also:
>
> das sie schon bei der[...]vom Compiler benötigt werden?
>
> gruß und Danke!

Übersetzung, Compilierung, Code-Erzeugung?
Nimmt man es beim anderen Satz "dass diese bei der Deklaration der 
templatisierten Socketinstanzen vom Typ
simple_target_socket_tagged und simple_initiator_socket_tagged vom
Präprozessor benötigt werden." ganz genau, müsste es eigentlich "dass 
diese (vom Compiler, zur Code-Erzeugung) bei der Instantiierung der 
generischen Socketklassen vom Typ... benötigt werden" heißen.
#1675593
Lesenswert?

Hi,

ich dachte bis jetzt dass beispielsweise in meinem Fall

tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*  SI_read;

als Deklaration bezeichnet wird und

SI_read  = new 
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];

als die Definition.

Zumindest ist die Bezeichnung bei Visual Studio so. Und meiner Ansicht 
nach ist beides zusammen die Instanziierung eines Members. Bitte 
korrigiert mich, wenn ich daneben liege!

Gruß & Danke vielmals!
Gast #1676629
Lesenswert?

Hi,

ich dachte bis jetzt dass beispielsweise in meinem Fall
1
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>*
2
SI_read;

> als Deklaration bezeichnet wird und

Das ist eine Definition, wobei jede Definition auch gleichzeitig eine 
Deklaration ist.
1
 SI_read  = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs];

> als die Definition.

Nein, das ist keine Defininiton. Es ist eine Instanziierung und eine 
Zuweisung.

> Und meiner Ansicht nach ist beides zusammen die Instanziierung eines
> Members.

Der zweite Teil ist die Instanziierung eines namenlosen dynamischen 
Objekts (keines Members), dessen Adresse an SI_read zugewiesen wird. 
Wenn SI_read also ein Member sein sollte, ist es höchstens eine 
Member-Zuweisung.
#1678186
Lesenswert?

Hi Rolf,

vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich 
teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten 
darüber haben. Zumindest war es so bei mir an der FH. Viele verwenden 
die Begrifflichkeiten, aber keiner zu 100% sicher. So wundere ich mich 
auch dass es bei Visual Studio so ist.

Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke, 
und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
1
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>*
2
SI_read;

Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke, 
springt er in die Zeile
1
SI_read  = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs];

Gruß
Gast #1681136
Lesenswert?

S. F. schrieb:

> vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich
> teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten
> darüber haben.

Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat.

> Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke,
> und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*
> SI_read;
>
>
> Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke,
> springt er in die Zeile
>
> SI_read  = new 
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];

Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der 
richtigen Verwendung von Begriffen. Die haben auch schon nicht 
verstanden, was eine Bitmap eigentlich ist.
#1681246
Lesenswert?

Rolf Magnus schrieb:
> S. F. schrieb:
>
>> vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich
>> teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten
>> darüber haben.
>
> Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat.
>
>> Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke,
>> und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
>>
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*
>> SI_read;
>>
>>
>> Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke,
>> springt er in die Zeile
>>
>> SI_read  = new
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];
>
> Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der
> richtigen Verwendung von Begriffen. Die haben auch schon nicht
> verstanden, was eine Bitmap eigentlich ist.

Auch die Bezeichnungen von MS sind richtig, da es in C/C++ mehrere 
Varianten gibt und alles zusammengefasst werden kann:
1
// Deklarationen
2
void aFunction(int aParameter);
3
extern Object anObject;
4
extern Object *anObjectPtr;
5

6
// Definitionen
7
typedef aType typeName;
8
void aFunction(int aParameter) {
9
}
10

11
// Deklaration und Definition
12
Object *anObjectPtr; 
13
// laut Standard ist das eine Zeiger-Deklaration und eine Definition, 
14
// da Speicher für ein Objekt vom Typ Zeiger auf Object reserviert wird
15

16
// Deklaration, Definition und Instantiierung, wenn es eine Klasse ist
17
Object anObject;
18

19
// Instantiierung
20
*anObjectPtr = new Object(); // Instantiierung
#1681630
Lesenswert?

Rolf Magnus schrieb:
> Arc Net schrieb:
>
>> // Instantiierung
>> *anObjectPtr = new Object(); // Instantiierung
>
> Eben. Speziell das ist nur eine Instantiierung und keine Definition und
> auch keine Deklaration. Laut S. F. nennt Visual Studio es aber
> "Definition".

Laut aktuellem ISO-C++-Draft 
(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf)
7 Absatz 8
"An object declaration, however, is also a definition unless it contains
the extern specifier and has no initializer (3.1). A definition causes 
the appropriate amount of storage to be reserved and any appropriate 
initialization (8.5) to be done."
C99 6.7 Absatz 5
"A declaration specifies the interpretation and attributes of a set of 
identifiers. A definition of an identifier is a declaration for that 
identifier that:
— for an object, causes storage to be reserved for that object;"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren