在C ++中调用静态函数

时间:2013-04-22 15:40:33

标签: c++ class static-methods

我正在编写一个代码来处理C ++中的向量。 我有3个文件:main.cpp,Vektor.cpp和Vektor.h 现在我想在main中调用一个静态funktion,它在Vektor.cpp中实现并在Vektor.h中声明。 “test”和“test2”是Vektor类的两个实例。 Eclipse抛出一个错误,但我不知道为什么;它说

  

此行有多个标记        - 功能'addieren'不可能        解决        - 'addieren'未在此声明        范围        - 'endl'的无效重载        - 换行符:main.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);

感谢您的帮助!!

4 个答案:

答案 0 :(得分:5)

您需要将其称为:

Vektor::addieren(test,test2);

可以使用类的完全限定名称调用静态成员函数。它们也可以在类实例上调用,但由于您没有任何实例,因此它不适用于此。

答案 1 :(得分:1)

调用静态函数的语法是:Vektor::addieren(...)

答案 2 :(得分:1)

你应该叫它

Vektor::addieren(test, test2)

但我建议你,改进addieren函数,通过引用或指针传递两个向量。

addieren(Vektor & vektor1, Vektor & vektor2)

addieren(Vektor * vektor1, Vektor * vektor2)

但是你必须用

来调用它
Vektor::addierent(&test, &test2)

答案 3 :(得分:1)

您需要使用类的完全限定名称来调用它,如:

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

或对象(类的实例):

Vektor v;
Vektor v_res=v.addieren(test, test2);