Я хотел бы создать структуру данных Octree в C++. У меня есть заголовочный файл, который выглядит следующим образом:Функция return struct pointer
class Octree
{
public:
typedef struct node
{
int value;
node *child[8];
}node;
Octree();
~Octree();
int convert(int sorszam);
void clear(struct node*);
node* search(int dec,int oct);
};
И я хотел бы написать функцию поиска в файле .cpp, но я всегда получал сообщение об ошибке. Вот код .cpp:
node* Octree::search(int dec, int oct) {
//doing something here
return nullptr;
}
И сообщение об ошибке говорит:
декларация несовместима с "Octree :: узлом * Octree :: Поиска (интермедиат Декабре, внутр Октябрь)" (объявленной в строке 19 "C: \ Users \ ххх \ Documents \ Visual Studio 2015 \ Projects \ ххх \ ххх \ Octree.h")
Я понятия не имею, Что происходит, потому что тип двух функций является одна и та же. Что я делаю не так?
Попробуйте изменить тип возвращаемого значения в CPP для 'Octree :: узла *' вместо просто 'node *'. Вы также можете отказаться от typedef, не нужно, чтобы в C++. – Chad
или переместите typedef из узла struct вне класса –
Они также могут избавиться от 'typedef', как на C++, вам не нужно украшать имя' struct' 'struct' при его использовании. – NathanOliver