Klassen auslagern, Typenkonflikt beim deklarieren



  • Hallo,
    ich habe ein "Sammelheader" der alle includes einbinden soll....

    //all.h
    #include <iostream>
    #include <math.h>
    #include <fstream>
    #include <string>
    #include <vector>
    
    #include "cluster.h"
    

    und dann habe ich ein header cluster.h der eine klassendefintion enthält....

    class cluster
    {
    public:
    	//attributes:
    	std::vector < std::pair<double,double> > nodes;
    	std::pair <double,double> center;
    	double score, total_x, total_y;
    
    	//methods:
    	cluster(int);
    	~cluster();
    	void push( std::pair<double, double>);
    	void setScore();
    	void setcenter();
    }
    

    jedem header sein code....
    doch hier kommen nun die Fehler.

    #include "all.h"
    //error C2533: 'cluster::__ctor': Ergebnistyp für Konstruktoren nicht zulässig
    
    cluster::cluster(int newcenter)
    {
    }
    //void wird nicht akzeptiert?
    
    void cluster::push(std::pair<double,double> node)
    {
    }
    void cluster::setcenter()
    {
    }
    void cluster::setScore()
    {
    }
    

    Ich kann die Funktionstypen nicht deklarieren, tue ich es einfach nicht kommt ein Fehler wegen Überladen mit gleicher Parameterliste.
    Nun ich möchte ja die Methoden nicht überladen, sondern sie nur definieren.
    Habt ihr eine Ahnung wo der Fehler liegt?

    Danke stillsen



  • habe den fehler gefunden....
    es war nur ein kleines semikolon was fehlte...
    es gehört in die cluster.h nach der klassendefinition
    [cpp]
    class cluster
    {
    public:
    //attributes:
    std::vector < std::pair<double,double> > nodes;
    std::pair <double,double> center;
    double score, total_x, total_y;

    //methods:
    cluster(int);
    ~cluster();
    void push( std::pair<double, double>);
    void setScore();
    void setcenter();
    };[/cpp]

    🕶



  • btw,

    #include <cmath>
    

    math.h ist C, in C++ nennt sich das cmath.


Anmelden zum Antworten