Typy w C++. Zapisanie i interpretacja kodu.

0

Jakbyście przeczytali ten fragment kodu?

void (*(T::&*R::ptr)[])(int, double *)

I jak zapisali ten:
ptr is pointer to array of 5 of pointer in namespace T to function returning int jako poprawny typ w C++?

Moje próby to:
1.
a) int (ptr[5])::T(int, int, int, int, int)
b) int T::(
(*ptr)[5]) ()

a) pointer to reference a member of T to array
of pointers to function of pointer to double and int returing void
b) ptr is in namespace R
pointer to reference in namespace T to pointner to array
to function of pointer to double and int returing void

Bardzo proszę o weryfikacje i pomoc.
Dziekuje.

4

Tak bym go przeczytał: obrzydliwy i beznajdziejny kod nadający się jedynie do skasowania.

OT:
Powiedz temu, kto zadał Ci to zadanie, że jest idiotą.
Serio.
Nikt przy zdrowych zmysłach nie używa takich typów. To nawet nie jest dobre jako ćwiczenie czegokolwiek. To jest bez żadnego sensu. Po pierwsze używa się typedef. Po drugie w praktyce nie używa się po prostu takich potworów. Czego to ma niby uczyć? To odrzuca od języka i pokazuje najgorsze praktyki; to powinno być raczej pokazywane jako przykład koszmarnego i beznadziejnego programowania.

0

nie ma czegoś takiego jak pointer to reference:

skąd masz te łamacze mózgu? beznadziejny task

http://stackoverflow.com/questions/4632762/why-pointers-to-a-reference-is-illegal-in-c

0

Zdaje sobie sprawę... Tak uczą własnie programowania abstrakcyjnego. Nie będę się chwalił gdzie bo wstyd. Albo jak już mam takie zadanie to chciałbym go wysłać i dlatego proszę o pomoc. Przynajmniej jakić jeden ogarnięty człowiek który to jakkolwiek poprawnie spróbuje napisać.

1

Przez to in namespace T mam wrażenie, że nie jest to w ogóle możliwe.

@Edit
najbliższe będzie

int (T::*(*foo)[5])()

Ale T musi być klasą, a nie namespacem.

ogólnie polecam cdecl.org do takich spraw

1

ptr is pointer to array of 5 of pointer in namespace T to function returning int

trochę niezrozumiały ten fragment “in namespace T”, ale powiedzmy że tak:

namespace T
{
	typedef int (*func)();
}

T::func (*ptr)[5];
0
T::&*R::ptr

a tylko ten fragment jak przeczytać?
Bo
void (*(foo)[])(int, double *) to
declare foo as array of pointer to function (int, pointer to double) returning void

0

Ta strona: http://cdecl.org/
Czyta każdy wyraz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1