Hallo Liebe ngb Gemeinde,
ich habe derzeit einen Fehler der mich ganz wuschig macht erstmal etwas Code und die darauf folgende Erklärung.
triangle.hpp
[src=cpp-qt]
#ifndef TRIANGLE_HPP_INCLUDED
#define TRIANGLE_HPP_INCLUDED
#include <vector>
#include <string>
#include <sstream>
#include <glm/glm.hpp>
std::string _asString(const glm::vec3& vec){
std::stringstream ss;
std::string out;
ss << "(" << vec.x << ";" << vec.y << ";" << vec.z << ")";
ss >> out;
return out;
}
struct Triangle{
glm::vec3 a,b,c;
glm::vec3 normalize(void){
return glm::normalize(glm::cross(b - a, c - a));
}
std::string asString(void){
std::stringstream ss ;
std::string out;
ss << "A" << _asString(a) << "\t"
<< "B" << _asString(b) << "\t"
<< "C" << _asString(c);
return out;
}
};
#endif // TRIANGLE_HPP_INCLUDED
[/src]
Hier ist nichts besonderes zu sehen ... nur eine kleine Helferfunktion die mir ein 3D Vektor als string zurück gibt und ein struct was zur Datenhaltung eines Dreieckes dient.
Und genau bei der Funktion _asString schreit mich der Linker an das es eine mehrfache Defintion sei , jedoch versuche ich sowas durch #ifndef Anweisungen zu verhindern...ein kleines Beispiel
xbeliebigerheader.hpp:
[src=cpp-qt]
#ifndef XBELIEBIGERHEADER_HPP_INCLUDED
#define XBELIEBIGERHEADER_HPP_INCLUDED
#ifndef TRIANGLE_HPP_INCLUDED
#include "triangle.hpp"
#endif //TRIANGLE_HPP_INCLUDED
/*
{ .... Code hier und da .... }
*/
#endif // XBELIEBIGERHEADER_HPP_INCLUDED
[/src]
_asString wird in keiner anderen Header ,von meinen Programm, definiert bzw. deklariert und stehe deshalb komplett auf den Schlauch. Ich hoffe ihr könnt mir dabei weiterhelfen.
ich habe derzeit einen Fehler der mich ganz wuschig macht erstmal etwas Code und die darauf folgende Erklärung.
triangle.hpp
[src=cpp-qt]
#ifndef TRIANGLE_HPP_INCLUDED
#define TRIANGLE_HPP_INCLUDED
#include <vector>
#include <string>
#include <sstream>
#include <glm/glm.hpp>
std::string _asString(const glm::vec3& vec){
std::stringstream ss;
std::string out;
ss << "(" << vec.x << ";" << vec.y << ";" << vec.z << ")";
ss >> out;
return out;
}
struct Triangle{
glm::vec3 a,b,c;
glm::vec3 normalize(void){
return glm::normalize(glm::cross(b - a, c - a));
}
std::string asString(void){
std::stringstream ss ;
std::string out;
ss << "A" << _asString(a) << "\t"
<< "B" << _asString(b) << "\t"
<< "C" << _asString(c);
return out;
}
};
#endif // TRIANGLE_HPP_INCLUDED
[/src]
Hier ist nichts besonderes zu sehen ... nur eine kleine Helferfunktion die mir ein 3D Vektor als string zurück gibt und ein struct was zur Datenhaltung eines Dreieckes dient.
Und genau bei der Funktion _asString schreit mich der Linker an das es eine mehrfache Defintion sei , jedoch versuche ich sowas durch #ifndef Anweisungen zu verhindern...ein kleines Beispiel
xbeliebigerheader.hpp:
[src=cpp-qt]
#ifndef XBELIEBIGERHEADER_HPP_INCLUDED
#define XBELIEBIGERHEADER_HPP_INCLUDED
#ifndef TRIANGLE_HPP_INCLUDED
#include "triangle.hpp"
#endif //TRIANGLE_HPP_INCLUDED
/*
{ .... Code hier und da .... }
*/
#endif // XBELIEBIGERHEADER_HPP_INCLUDED
[/src]
_asString wird in keiner anderen Header ,von meinen Programm, definiert bzw. deklariert und stehe deshalb komplett auf den Schlauch. Ich hoffe ihr könnt mir dabei weiterhelfen.
Zuletzt bearbeitet: