2013-04-22 2 views
1

C++에서 벡터로 작업 할 코드를 작성하고 있습니다. main.cpp, Vektor.cpp 및 Vektor.h의 세 파일이 있습니다. 이제 Vektor.cpp에서 구현되고 Vektor.h에 선언 된 main에서 정적 funktion을 호출하려고합니다. "test"와 "test2"는 Vektor 클래스의 두 인스턴스입니다. Eclipse에서 오류가 발생하지만 그 이유는 알 수 없습니다. 'addieren'이 범위 에 선언되지 않았습니다 - - 'ENDL' 의 잘못된 과부하 - 기능 'addieren' 해결 수 없습니다 - 그것은이 라인 에서C++에서 정적 함수를 호출하십시오.

여러 마커를 말한다 라인 중단 점 : 주 .cpp [줄 : 28]

어디에서 실수하나요? "Vektor.h"가 포함되어 있습니다. 여기에 필요한 절단은 다음과 같습니다

MAIN.CPP :

// ... 
cout << "Summe: " << addieren(test,test2) << endl; 

Vektor.cpp :

Vektor Vektor::addieren(Vektor vektor1, Vektor vektor2) 
{ 
Vektor vektorSumme; 
vektorSumme.set_x(vektor1.get_x() + vektor2.get_x()); 
vektorSumme.set_y(vektor1.get_y() + vektor2.get_y()); 
vektorSumme.set_z(vektor1.get_z() + vektor2.get_z()); 
return vektorSumme; 
} 

Vektor.h : 돕는

class Vektor 

{ 
//... 
public: 
    //... 
static Vektor addieren(Vektor vektor1, Vektor vektor2); 

감사합니다!

Vektor::addieren(test,test2); 

정적 멤버 함수는 클래스의 완전한 이름으로 호출 할 수 있습니다

+0

영어를 모든 소스를 만들고 코멘트의 습관을해야하는 이유 좋은 예; 언젠가 모국어를 모르는 사람이 당신의 코드를 보게 될 것이기 때문에 양측 모두가 어색한 일이 될 것입니다.- 밤에는 빛의 광선을 통해 빛의 광선을 전달하는 남자와 여자의 손을 잡고; TIRES WIRD jemand deinen 코드 위반 딱지, 그 중에서도 Muttersprache nicht michtig ist, 문제가 생겨날 때까지. – DevSolar

답변

5

당신은으로 호출해야합니다. 클래스 인스턴스에서 호출 할 수도 있지만 인스턴스가 없으므로 여기서는 적용되지 않습니다.

+1

이 경우 인스턴스를 호출 할 수는 없지만 인스턴스에서도 호출 할 수 있습니다. – derpface

+0

정확히, 그래서 대답의 두 번째 부분은 유효하지 않습니다 – 4pie0

1

정적 함수를 호출하는 구문은 다음과 같습니다 Vektor::addieren(...)

1

당신은 그것을

Vektor::addieren(test, test2) 

를 호출해야하지만 addieren이 참조 또는 포인터에 의해 두 벡터를 전달하는 기능을 개선하기 위해, 당신을 건의 할 것입니다.

addieren(Vektor & vektor1, Vektor & vektor2)

또는

addieren(Vektor * vektor1, Vektor * vektor2)

하지만 당신은 당신 같이 클래스의 완전한 이름이 호출 할 필요가

Vektor::addierent(&test, &test2) 
+2

그는 그가 선택 사항이라고 생각하면 포인터로만 전달해야합니다. 또한 그는 벡터의 값만 읽는 것처럼 보이는 것처럼 const 참조를 사용해야합니다. – Dennis

+0

예,하지만 그가 매우 초보자 인 경우에는 현재로서는 const로 가서 해결해야 할 이유가 없습니다. 왜 유용합니까? 포인터가 지나가고 있으면 맞습니다. –

1

으로 호출해야합니다

Vektor v_res=Vektor::addieren(test, test2); 

또는 객체 (클래스의 인스턴스)에:

Vektor v; 
Vektor v_res=v.addieren(test, test2); 
관련 문제