Hola familia.
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++:
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 *);
};
(.cpp)
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){
printf("Error:El arbol está vacio"); }else{
r->izq=nodo;
}
}
void arbol::insertarDer(arbol* nodo){
if(r==NULL){
printf("Error:El arbol está vacio"); }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.