Tengo un problema...
El tema es que comence a hacer un proyecto de c++ con Visual studio, y ahora necesito portarla a netbeans.
El problema es que con Visual studio no me daba ningun tipo de problemas de los que me está dando ahora con nb.
Uno de los errores que no consigo resolver es el siguiente:
Muestro el mensaje y el código:
error:
arbol.h:13: error: redefinition of `class arbol'
arbol.h:13: error: previous definition of `class arbol'
Donde la clase arbol es:
(.h)
Código C++:
(.cpp)Ver original
#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; #define RAMA_NULL 100 #define DIA -1 #define BOX -2 #define NOT -3 #define AND -4 #define OR -5 #define IMPLIES -6 class arbol{ private: //Arbol binario no completo. struct nodetype { int raiz;//Puede ser un operador o un literal arbol *izq, *der;//Arbol izq, der. } *r; void imprimirOperador(int i){ switch (i){ case DIA: cout<<"|(DIA)|"; break; case BOX: cout<<"|(BOX)|"; break; case NOT: cout<<"|(NOT)|"; break; case AND: cout<<"|(AND)|"; break; case OR: cout<<"|(OR)|"; break; case IMPLIES: cout<<"|-(==>)-|"; default: break; } } public: arbol();//Constructor ~arbol();//Destructor, llama al método destructor void setValor(int x) {r->raiz = x;};//Da valor de la raiz. arbol * getArbolIzq(); arbol * getArbolDer(); void destructor();//Destructor void insertarIzq(arbol *);//Inserta arbol al nodo izquierdo void insertarDer(arbol *);//Inserta arbol al nodo derecho int raiz(); int altura(); void preorden();//Recorrido del arbol en preorden. De momento imprime el arbol en preorden //void inorden(); //void postorden(); void preorden(arbol *);//Recorrido del arbol en preorden. De momento imprime el arbol en preorden /*Imprime un arbol por niveles con hojas indice.*/ void anchura(string * []); /*Imprime un arbol por niveles. Usando el numbre de las variables.*/ void anchura(arbol*,string * []); bool iguales(arbol * ); //void inorden(arbol *); //void postorden(arbol *); };
Código C++:
Ver original
#include "arbol.h" #include <stdio.h> #include <iostream> #include <queue> #include <string> #include <stdlib.h> using namespace std; arbol::arbol(){ r = new nodetype; r->der=NULL; r->izq=NULL; } arbol::~arbol() { //destructor(); } void arbol::destructor() { if(r->izq) r->izq->destructor(); if(r->der) r->der->destructor(); delete r; } arbol * arbol::getArbolIzq(){ return r->izq; } arbol * arbol::getArbolDer(){ return r->der; } void arbol::insertarIzq(arbol* nodo){ if(r==NULL){ }else{ r->izq=nodo; } } void arbol::insertarDer(arbol* nodo){ if(r==NULL){ }else{ r->der=nodo; } } void arbol::preorden() { if(r) preorden(this); } int arbol::raiz(){ return r->raiz; } /* Variable: altura-izquierda Variable: altura-derecha Variable altura-resultado altura-izquierda = 0. altura-derecha = 0. si hay una rama derecha: altura-derecha = Altura(rama-derecha) si hay una rama izquierda: altura-izquierda = Altura(rama-izquierda) altura-resultado = max(altura-izquierda, altura-derecha) + 1 Devuelve altura-resultado. Fin de Funcion*/ int arbol::altura(){ int res=0; int izq=0; int der=0; if (r->izq!=NULL){ izq=r->izq->altura(); } if(r->der!=NULL){ der=r->der->altura(); } res=max(izq,der)+1; return res; } void arbol::preorden(arbol *ar) { if(ar!=NULL) { for (int i = 0; i < (ar->altura())/2; i++) { cout<<"\t"; } cout<<ar->r->raiz<<endl; preorden(ar->r->izq); preorden(ar->r->der); } } void arbol::anchura(string * arCodif []){ if (r){ anchura(this,arCodif); } }
Si alguien pudiera echarme una mano se lo agradecería, ya que estoy bastante agobiado con este tema. Saludos.