我正在尝试使用函数向类变量添加2,但它给了我undefined reference to addTwo(int)
,即使我已经声明了它。
#include <stdio.h>
#include <iostream>
using namespace std;
class Test {
public:
int addTwo(int test);
int test = 1;
};
int addTwo(int test);
int main() {
Test test;
cout << test.test << "\n";
addTwo(test.test);
cout << test.test;
}
int Test::addTwo(int test) {
test = test + 2;
return test;
}
答案 0 :(得分:1)
定义的成员函数int Test::addTwo(int test)
与声明的全局函数int addTwo(int test);
不同,后者是编译器搜索的。
要消除错误,请定义全局函数或更改全局函数的调用以调用成员函数。
为了使用函数&#34;将#2添加到类变量中,您应该停止通过参数隐藏成员变量。 (您可以使用this->test
来使用成员变量,但在这种情况下不需要这样做)
试试这个:
#include <iostream>
using namespace std;
class Test {
public:
int addTwo();
int test = 1;
};
int main() {
Test test;
cout << test.test << "\n";
test.addTwo();
cout << test.test;
}
int Test::addTwo() {
test = test + 2;
return test;
}
答案 1 :(得分:0)
由于它是实例test
的成员函数,因此必须将其称为
test.addTwo(test.test);
相反,你将其称为
addTwo(test.test);
并且它不知道该功能是什么。就编译器而言,addTest(int)
不存在,因为您没有在类定义之外定义它。