[英]Call static function in C++
我正在編寫代碼以在C ++中使用向量。 我有3個文件:main.cpp,Vektor.cpp和Vektor.h現在,我要在main中調用靜態功能,該功能在Vektor.cpp中實現並在Vektor.h中聲明。 “ test”和“ test2”是類Vektor的兩個實例。 Eclipse拋出錯誤,但是我不知道為什么; 它說
這行有多個標記-函數'addieren'無法解析-在此范圍內未聲明'addieren'-'endl'的重載無效-行斷點:main.cpp [line: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);
可以使用類的完全限定名稱來調用靜態成員函數。 也可以在類實例上調用它們,但是由於您沒有任何實例,因此不適用於此處。
調用靜態函數的語法是: Vektor::addieren(...)
你應該叫它
Vektor::addieren(test, test2)
但我建議您改進addieren函數,以通過引用或指針傳遞兩個向量。
addieren(Vektor & vektor1, Vektor & vektor2)
要么
addieren(Vektor * vektor1, Vektor * vektor2)
但是你必須用
Vektor::addierent(&test, &test2)
您需要使用類的完全限定名稱來調用它,如下所示:
Vektor v_res=Vektor::addieren(test, test2);
或對象(類實例)上:
Vektor v;
Vektor v_res=v.addieren(test, test2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.