2010-02-06 7 views
2

이 오류의 의미는 무엇입니까?C++ 오류 : 명시 적 자격

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)’ 

는 C++ (라인 13은 벡터 : 벡터 (...)입니다 :

#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 

헤더 파일 :

#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

잘못된 반환 값 외에도 정의에 기본 매개 변수를 정의 할 수 없습니다. 헤더 파일 만 가져옵니다. – GManNickG

+0

모든 것을 게시하십시오 - 단지 조각이 아닙니다 – pm100

+0

그래서 .. 지금 당신의 문제가 해결 되었습니까? – Jagannath

답변

2

당신의 cpp 파일에는 당신이 포함되어 있지 않은 것처럼 보입니다. r 헤더 파일.

4

이 생성자는 심지어 더 리턴 타입을,이 없다 void. 그냥 void을 제거하면 괜찮아요.

+0

그것이 원래 가지고 있었고 다른 오류가 추가되었습니다. –

+0

그러면 다른 오류에 대해 물어야합니다. –

+0

GMan의 제안을 시도해보고 클래스의 선언자 (Vector (double x, double y, double z);의 선언 어딘가에)가 선언되었는지 확인하십시오. –

1

cpp 파일에 헤더 파일을 포함시킵니다. 또한이 코드에는 몇 가지 디자인 문제가 있습니다. 연산자 +는 const 벡터와 연산자 -와 같은 대소 문자를 반환해야합니다.

관련 문제