Fehler beim Debuggen



  • Hallo!

    Ich versuche einen B+-Baum zu implementieren und stoße dabei auf einen Fehler den ich nicht verstehe.

    Hier erstmal der Quellcode:

    #pragma once
    
    template <class T, int n=4> class B_Plus_Baum
    {
    public:
    	B_Plus_Baum(void);
       ~B_Plus_Baum(void);
    
    	void insert(T Wert);
    	void Suchen(T Wert);
    
    private:
    	void split_Knoten();
    
    	struct Knoten
    	{
    		int size;                           // Um Füllstand des vectors zu speichern
    		T Value[n];
    		Knoten* greater[n];                 // n Zeiger auf größere Blätter 
    		Knoten* less;                       // 1 Zeiger auf Kleineres Blatt
    	};
    
    	struct Knoten Wurzel;
    
    };
    
    #include "B_Plus_Baum.h"
    
    template <class T, int n> B_Plus_Baum<T,n>::B_Plus_Baum(void)
    {
    	Wurzel.size=0;
    }
    
    template <class T, int n> B_Plus_Baum<T,n>::~B_Plus_Baum(void)
    {
    
    }
    
    template <class T, int n> void B_Plus_Baum<T,n>::insert(T Wert)
    {
    	if(Wurzel.size<n)
    	{
    	    Wurzel.Value[Wurzel.size]=Wert;
    		Wurzel.size++;
    	}
    	else
    	{
    		split_Knoten();
    	}
    
    }
    
    template <class T, int n> void B_Plus_Baum<T,n>::Suchen(T Wert)
    {
    
    }
    
    template <class T, int n> void B_Plus_Baum<T,n>::split_Knoten()
    {
    	for(int i=0;i<(Wurzel.size/2);i++)
    	{
    		Wurzel.greater[0]->Value[i]=Wurzel.Value[i];
    	}
    
    }
    

    Und hier noch die main:

    #include "B_Plus_Baum.cpp"
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	B_Plus_Baum<int> baum;
    
    	baum.insert(1);
    	baum.insert(2);
    	baum.insert(3);
    	baum.insert(4);
    	baum.insert(5);
    
    	return 0;
    }
    

    Wenn ich alles kompiliere hab ich keine Fehler. Aber wenn ich Debugge und bei der Objekterstellung mit F11 in den Konstruktor springen möchte, wird stattdessen eine Dissambly geöffnet.
    Könnte das vielleicht mit dem zusätzlichen Template Parameter zusammenhängen?

    Ich bin wirklich ratlos!

    Gruß
    Reptile100



  • Mittlerweile hab ich das Problem beheben können.
    Aber ich bekomme einen Fehler bei diesen Teil:

    template <class T, int n> void B_Plus_Baum<T,n>::split_Knoten()
    {
    	for(int i=0;i<(Wurzel.size/2);i++)
    	{
    		Wurzel.greater[0]->Value[i]=Wurzel.Value[i];
    	}
    
    }
    

    Unbehandelte Ausnahme bei 0x004116c7 in B-Baum.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000004.


Anmelden zum Antworten