我正在编写一个代码来处理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);
感谢您的帮助!!
答案 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);