2009-05-15 6 views
0

Я пытаюсь объявить метод в main.h так:Передача ** класса в качестве аргумента

void buildGraph(int gNum, Graph** gArray); 

Где Graph является классом, и я пытаюсь передать указатель на массив указателей на объекты Graph.

Я получаю сообщение об ошибке: «График не был объявлен». Даже если у меня есть #include "graph.h" в верхней части страницы, и до сих пор я использую класс графа , поэтому я знаю, что он работает.

Любые идеи?

+0

Нет никаких проблем с этим объявлением функции. Проблема должна быть еще, можете ли вы опубликовать весь код? И вы уверены, что Граф не находится в пространстве имен? – mentat

ответ

0

Возможно, имя Graph находится в пространстве имен? Что говорит этот файл graph.h - это график на верхнем уровне или внутри оператора пространства имен?

+0

мой graph.h начинается, как это // # включить "main.h" #include #include с использованием патезраса; класс Graph { частное: \t INT MAXVAL; \t Vlist vertList; \t Elist edgeList; public: Это то, что вы имели в виду, будучи в пространстве имен? Должен ли я избегать использования пространства имен? Не использует ли это, что я должен использовать std :: перед каждой стандартной функцией? Во всяком случае, когда я копировал текст, чтобы поставить здесь, я заметил, что проблема заключалась в том, что я включил main.h в свой файл graph.h. Задача решена. Спасибо! – Meir

+1

Нет, здесь вы делаете все содержимое std :: visible без использования префикса std ::. Алекс означал, что у вас может быть что-то вроде: namespace MyNamespace {class Graph {}; }; – sharptooth

+0

Обычно я избегаю «использования пространства имен foo;» потому что он может запутать читателя или хранителя кода, но из всех пространств имен std является тем, что имеет смысл использовать этот способ. –

3

Возможно, у вас есть несколько файлов graph.h в файловой системе, и не входит. Если из-за скопированного копирования удалите ненужные копии, если это связано с столкновением с стандартной библиотекой C++ или другими библиотеками, вы должны переименовать файлы заголовков, чтобы предотвратить такие столкновения в будущем.

1

Общей возможностью для этого является неправильное включение охраны в Graph.h, возможно, с использованием другого файла заголовка, который вы используете.

То есть, убедитесь, что «#ifndef GRAPH_H» -как линии вы должны иметь в Graph.h действительно то, что он должен быть ...

(но на самом деле, без дополнительной информации, отвечающей этот вопрос ... трудно).