簡體   English   中英

在C ++中調用靜態函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM