2015-12-11 7 views
6

Ich habe eine Übung gegeben, wo ich einen Typ-Alias ​​für eine "Referenz auf 3 ganze Zahlen" verwenden muss. Obwohl ich Erfolg mit typedef gefunden habe, bin ich nicht in der Lage, es durch using, eingeführt durch c++11, zu replizieren.Ist es möglich, 'using' zu verwenden, um den Verweis auf 3 Ganzzahl-Typalias zu deklarieren?

Code:

typedef int (& int_ref)[3]; \\success

using int_ref2 = (int &) [3]; \\error

Soll ich dann nur etwas verwenden wie ...

using int_ref2 = int [3];

int_ref2 & iruvar ...

+4

Es ist die gleiche Sache, ohne die Kennung. 'Int_ref2 = int (&) [3 ] ' – 0x499602D2

+0

Denken Sie daran, dass jedes Mal, wenn Sie Ihren Code so verdecken, die Schwierigkeit, den Code zu lesen und zu debuggen, zunimmt; besonders für andere Leute, die es pflegen müssen. Je größer das Projekt, desto schlechter wird es. – soulsabr

+0

IMO Sie sollten Dinge wie Verweise oder Zeiger in Typ-Aliase vermeiden, es wird Code schwerer zu lesen und zu verstehen machen. –

Antwort

6

Vergleichen Sie diese beiden Erklärungen

typedef int (& int_ref)[3]; \\success 

using int_ref2 = (int &) [3]; \\error 

Wie Sie es einen Unterschied sehen: in der zweiten Erklärung Typspezifizierer int ist in den Klammern.

legen Sie es also außerhalb der Sie

using int_ref2 = int(&)[3]; 

Alle Klammern müssen, ist die Typnamen in der typedef außerhalb der Klammern auf der linken Seite in Bezug auf die Gleichung Zeichen verwendet zu bewegen.

Der Vorteil der using-Deklaration ist, dass sie strenger und klarer ist.

Vergleichen Sie es zum Beispiel mit der folgenden typedef Erklärung

int typedef (& int_ref)[3]; 

, die auch eine gültige Erklärung :)

+3

Für meine Gesundheit, entfernen Sie auch die zusätzliche Leerstelle in der '(&)'! – Yakk

+1

@Yakk Ich habe ein Leerzeichen hinzugefügt. :) –

Verwandte Themen