Создание указателя необычным способом - PullRequest
0 голосов
/ 10 июля 2019

Я искал реализацию алгоритма SCC в C ++, и есть одна странная строка, которая явно за пределами моего понимания.

Graph<V,E> gt(SIZE(g)), res(SIZE(g)), *tab[] = {this,&gt};

Я не понимаю *tab[] = {this,&gt};

Я предполагаю, что это указатель, но все еще не получил его вообще, поэтому я был бы рад, если бы кто-то мог объяснить это мне. Я использую C ++ почти 6 лет и никогда раньше не видел такого указателя.

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Похоже, что это три разные декларации:

Graph<V,E> gt(SIZE(g));
Graph<V,E> res(SIZE(g));
Graph<V,E> *tab[] = {this,&gt};

Вероятно, это чья-то идея сделать код более минималистичным, но это, вероятно, влияет на читабельность довольно серьезным образом.

Почему tab даже существует, я не знаю, это зависит от того, как оно используется в других частях кода.Это какой-то странный связанный список?

1 голос
/ 10 июля 2019

tab представляет собой массив указателей на Graph<V, E> и инициализируется двумя элементами: указатель this и указатель на вновь созданный gt.

...