2015-11-05 3 views
-1

У меня проблема, класс Rectangle не работает должным образом в TwoDimTree.h Например, «Rectangle Extent;» похоже, работает, но когда я пытаюсь использовать его, он говорит, что класс участника не найден.использование неопределенного типа C++, класс

Я хочу использовать его как «Extent.get_Top;» , но я не могу это сделать.

Также в списке ошибок, которые я получил. Ошибка 7 ошибки C2027: использование неопределенного типа «Прямоугольник»

Мои заголовки внизу. Я действительно не смог найти свою ошибку. Спасибо за помощь.

Моего TwoDimTree.h

#include <string> 
#include "Rectangle.h" 
#include "LinkedList.h" 
using namespace std; 
class TwoDimTreeNode 
{ 
public: 
    TwoDimTreeNode(Rectangle,TwoDimTreeNode*,TwoDimTreeNode*,TwoDimTreeNode*,TwoDimTreeNode*,LinkedList<Rectangle>,LinkedList<Rectangle>); 
    TwoDimTreeNode(Rectangle); 
    Rectangle get_Extent(); 
private: 
    Rectangle Extent; 
    LinkedList <Rectangle> Vertical; 
    LinkedList <Rectangle> Horizontal; 
    TwoDimTreeNode*TopLeft; 
    TwoDimTreeNode*TopRight; 
    TwoDimTreeNode*BottomLeft; 
    TwoDimTreeNode*BottomRight; 


    friend class Rectangle; 
    friend class LinkedList<Rectangle>; 
}; 

Мой Rectangle.h

#include <string> 
#include "TwoDimTreeNode.h" 
#include "LinkedList.h" 

using namespace std; 
class Rectangle { 
public: 
    Rectangle(int,int,int,int); 
int get_Top(); 
    void set_Top(int); 
private: 
    int Top; 
    int Bottom; 
    int Right; 
    int Left; 

    friend class TwoDimTreeNode; 
    friend class LinkedList<Rectangle>; 

}; 

Моего Linkedlist.h

#include <string> 
#include "Rectangle.h" 
#include "TwoDimTreeNode.h" 
using namespace std; 

template <class Object> 
struct node 
{ 
    Object element; 
    node*next; 
    node(const Object & theElement = Object(),node*n=NULL) 
     :element(theElement), next(n){} 
    friend class Rectangle; 
    friend class TwoDimTreeNode; 
}; 
template <class Object> 
class LinkedList 
{ 
public: 
    LinkedList(); 
    int get_Length(); 
    Object search(int,int); 
    bool check_Rectangle(Object); 
private: 

    int length; 
    node<Object>*head; 

}; 
+0

Вы смотрите, чтобы создавать общий связанный список, но жёстко он должен иметь свойства, связанные с прямоугольником, из-за 'check_Rectangle' (зачем нужен список не прямоугольников?) и классы друзей. На самом деле я бы проверял, что вам нужно так много друзей. Также функция 'search' возвращает копию содержащегося объекта. –

+0

Я использую эту программу, чтобы найти только прямоугольники. –

ответ

1

у вас есть циклические включить. Rectangle.h включает twodimtree. twodimtree включает в себя прямоугольник

Чистый эффект является то, что TwoDimTree является процессом первого и referes прямоугольнику Thats еще

Remove не определен включать twodimtree из прямоугольника

+0

Да, спасибо, это сработало! –

Смежные вопросы