使用类通过main调用函数

时间:2016-05-05 00:35:38

标签: c++

我正在尝试使用函数向类变量添加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;
}

2 个答案:

答案 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)不存在,因为您没有在类定义之外定义它。