2010-02-06 6 views
2

Que signifient ces erreurs?Erreur C++: qualification explicite

Vector.cpp:13: error: ISO C++ forbids declaration of ‘Vector’ with no type 
Vector.cpp:13: error: explicit qualification in declaration of ‘void Vector::Vector(double, double, double)’ 

Le C++ (ligne 13 est le vecteur :: Vector (...):

#include <iostream> 
using namespace std; 

namespace Vector 
{ 
    Vector::Vector(double x, double y, double z) 
    { 
     a = x; 
     b = y; 
     c = z; 
    } 
/* 
    double Vector::dot(const Vector &v) const 
    { 
     return (a*v.a)+(b*v.b)+(c*v.c); 
    } 
*/ 
    Vector Vector::operator+(const Vector &v) const 
    { 
     Vector v1(a + v.a, b + v.b, c + v.c); 
     return v1; 
    } 

    Vector Vector::operator-(const Vector &v) const 
    { 
     Vector v1(a - v.a, b - v.b, c - v.c); 
     return v1; 
    } 

    bool Vector::operator==(const Vector &v) const 
    { 
     if((a == v.a) && (b == v.b) && (c == v.c)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    Vector Vector::operator*(const Vector &v) const 
    { 
     Vector v1(b*v.c - c*v.b, c*v.a - a*v.c, a*v.b - b*v.a); 
     return v1; 
    } 

    ostream& operator<<(ostream &out, const Vector &v) 
    { 
     out << "<" << v.a << ", " << v.b << ", " << v.c << ">"; 
     return out; 
    } 

    istream& operator>>(istream &in, Vector &v) 
    { 
     in >> v.a; 
     in >> v.b; 
     in >> v.c; 
     return in; 
    } 
/* 
    double length(Vector v) 
    { 
     return sqrt((v.a*v.a)+(v.b*v.b)+(v.c*v.c)); 
    } 
*/ 
} // end namespace Vector 

Le fichier d'en-tête:

#ifndef _VECTOR_H 
#define _VECTOR_H 

#include <cstdlib> 
#include <iostream> 

using namespace std; 

namespace Vector 
{ 


class Vector 
{ 
private: 
    double a; 
    double b; 
    double c; 

public: 
    Vector(double x=0.0, double y=0.0, double z=0.0); 

    double dot(const Vector &v) const; 
    Vector operator+(const Vector &v) const; 
    Vector operator-(const Vector &v) const; 
    bool operator==(const Vector &v) const; 
    Vector operator*(const Vector &v) const; 
    friend ostream& operator<<(ostream &out, const Vector &v); 
    friend istream& operator>>(istream &in, Vector &v); 


}; // end Vector class 

    double length(Vector v); 

} //end namespace Vector 
#endif /* _VECTOR_H */ 
+0

En plus de la valeur de retour erronée, vous ne pouvez pas définir les paramètres par défaut dans la définition. Seul le fichier d'en-tête les obtient. – GManNickG

+0

poster le tout - pas seulement des pièces – pm100

+0

alors .. est votre problème résolu maintenant? – Jagannath

Répondre

2

On dirait que le problème majeur est que vos fichiers cpp ne vous ont pas inclus r fichier d'en-tête.

4

Constructors ont aucun type de retour, même pas Il suffit de retirer le void et vous êtes bien

+0

C'est ce que j'avais à l'origine et ça ajoute une autre erreur. –

+0

Alors peut-être que vous devriez poser des questions sur cette autre erreur. –

+0

Essayez la suggestion de GMan, assurez-vous également que le c'tor est déclaré dans la classe ('Vector (double x, double y, double z);' quelque part dans la déclaration de 'Vector'). –

1

Incluez le fichier d'en-tête dans le fichier cpp. En outre, le code a quelques problèmes de conception. operator + devrait renvoyer const Vector et le même cas avec operator-.

Questions connexes