Попытка реализовать графики с использованием ссылки this, я столкнулся с серьезным сомнением в синтаксисе.Роль скорбей в массиве указателей в C++
/ A structure to represent an adjacency list node
struct AdjListNode
{
int dest;
struct AdjListNode* next;
};
// A structure to represent an adjacency liat
struct AdjList
{
struct AdjListNode *head; // pointer to head node of list
};
// A structure to represent a graph. A graph is an array of adjacency lists.
// Size of array will be V (number of vertices in graph)
struct Graph
{
int V;
struct AdjList* array;
};
В упомянутом выше, он реализован в C, тогда как я реализовал его на C++. А теперь функция для создания структуры данных графа:
struct Graph* createGraph(int V) {
struct Graph *graph;
graph = new (struct Graph);
graph->V = V;
//the problem line below
graph->array = new (struct AdjList)[V];
//initialize all the elements in the array as NULL
for(int i = 0; i < V ; i++) {
graph->array[i].head = NULL;
}
return graph;
}
Этот код дает ошибку: массив Bound запрещен после скобки типа-ID В то время как, если я просто удалить paranthese от проблемной линии, все работает хорошо. Почему это происходит?
EDIT:
Я знаю, как решить эту проблему. Просто нужно это сделать.
graph->array = new struct AdjList[V];
Вопрос WHA, является ли он неправильным?
Просто удалите скобки и 'struct'. Нет смысла быть там. – David
Я понимаю, что структура не требуется. Но это не делает это неправильно. Я хочу знать, почему использование parenthese здесь неверно. Я не уверен, что структура имеет к этому какое-то отношение. Но я могу ошибаться. – SLearner
Просто сделайте 'graph-> array = new struct AdjList [V];'. Кстати, 'struct Graph' - относительно небольшой объект, поэтому вы можете также выделить его в стеке и вернуть его по значению. –