komischer fehler !

utzutz

Mitglied
Der fehler kommt...
Code:
Treectl.obj : error LNK2005: "public: __thiscall Treectl::Treectl(void)" (0Treectl@@QAE@XZ) bereits in tree.obj definiert
Treectl.obj : error LNK2005: "public: __thiscall Treectl::~Treectl(void)" (1Treectl@@QAE@XZ) bereits in tree.obj definiert
Treectl.obj : error LNK2005: "public: bool __thiscall Treectl::insertIT(int)" (?insertIT@Treectl@@QAE_NH@Z) bereits in tree.obj definiert
Debug/tree.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden

wenn ich das hier in einer consolen anwendung starte:
Code:
void main()
{
	int value;
    bool seek;
    Treectl obj;
	cin >> value;
    if (value>0)
        {	
        seek = obj.insertIT(value);
                if(seek==0)
                {  cout << "";
                }else
                    { cout << "hat geklappt!";
                    }
        }
        else
            cout << "Größer NULL, bitte !";
}

und ich hab keinen blassen Schimmer was ich ändern sollte.
Bitte um Hilfe ^^

MfG ICH ;)

**EDIT**
Die Klasse Treectl enthält nur eien funktion insertIT und halt const destr .
inertIT beinhaltet sone art node switching von nem tree.. quasi container zu container gucken ob größer etc.
bool insertIT(int);
 
Zuletzt bearbeitet:
utzutz hat gesagt.:
Code:
Treectl.obj : error LNK2005: "public: __thiscall Treectl::Treectl(void)" (0Treectl@@QAE@XZ) bereits in tree.obj definiert
Treectl.obj : error LNK2005: "public: __thiscall Treectl::~Treectl(void)" (1Treectl@@QAE@XZ) bereits in tree.obj definiert
Treectl.obj : error LNK2005: "public: bool __thiscall Treectl::insertIT(int)" (?insertIT@Treectl@@QAE_NH@Z) bereits in tree.obj definiert
Debug/tree.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden

Wie die Meldung besagt, hast du diese Funktionen, wenn auch nicht mit Absicht nochmals definiert.

Zeig doch mal die Datei in der die Funktionen definiert sind.
 
Code:
#include "StdAfx.h"
#include ".\treectl.h"
#include <iostream>
using namespace std;

Treectl::Treectl(void)
{
	m_root = NULL;
}

Treectl::~Treectl(void)
{
	if(m_root)
	{
		cout << "fsd";
    }
}

bool Treectl::insertIT(int value)
{
if (!m_root)
{
	Node* pNode = new Node;
	pNode->value = value;
	pNode->left = NULL;
	pNode->right = NULL;
	m_root = pNode;
    return 1;

}else
{	
    Node* tmp = m_root;
    if(tmp->value>value)
        { if(!tmp->right)
            {   Node* pNode = new Node;
            	pNode->value = value;
	            pNode->left = NULL;
	            pNode->right = NULL;
                tmp = tmp->right;
                return 1;
            }else return 0;
        }else
            {if(!tmp->left)
                {       Node* pNode = new Node;
            	        pNode->value = value;
	                    pNode->left = NULL;
	                    pNode->right = NULL;
                        tmp = tmp->left;
                        return 1;
                }
                else return 0;
            }
}
}
 
Hast du eventuell in der .h auch den Code der Funktionen drin?

Da sollte dann nur die Deklaration drin stehen:

Code:
class Treectl
{
  public:
  
    Treectl();
    ~Treectl();

    bool insertIT( int value );
}
 
Code:
#include "Nod.h"
#pragma once

class Treectl
{
private:
	Node* m_root;
public:
	Treectl();
	~Treectl();
	bool insertIT( int value );
};
 
Hi,

um Doppeldefinitionen zu vermeiden, setze den Inhalt deiner .h Datei in Folgendes:

Code:
#ifndef _TREECTL
#define _TREECTL

// hier folgt dann der Inhalt von der HeaderDatei

#endif

MfG

HT
 
Oder benutze #pragma once.
Da du Visual c++ hast (denke ich mal, weil das das Forum dazu ist) bin ich davon ausgegangen, das VC++ das #pragma once von alleine gesetzt hat ( bei mir macht es das), deswegen wollte ich auch, dass du die Definition der Funktionen/ Klasse postest
 
so alos hab beides probiert geht ebides nich ....

mit dem endif:
Code:
#ifndef _TREECTL
#define _TREECTL
#include "Nod.h"
#pragma once

class Treectl
{
private:
	Node* m_root;
public:
	Treectl();
	~Treectl();
	bool insertIT( int value );
};
#endif

und mit dem pragma gehts auch nicht !

kein blassen schimmer kommt wirklich immer dieser fehler !
Ihr habt jetzt eignetlich den kompleten code; main,tree.cpp/.h...
nur das node struct nicht aber das besteht aus einem int wert und zwei node pointern.
 
Eine blöde Idee habe ich noch (da habe ich immer genug in meiner Tasche von):

Hast du eventuell die .cpp mit #include irgendwo eingebaut?
 
Zurück