函数调用的未定义引用?

时间:2013-06-18 11:43:18

标签: c++

我有2个类,如下所示,每个头文件类都有一个函数如下:

  int call_thread() 
  {
    pthread_create(&thread, NULL, &Print_data, NULL);
    return 0;
  }

我试图在第2课中调用此方法:

void position::tick(schedflags_t flags) 
{
    call_thread();
    }

我总是收到错误undefined reference to 'call_thread()'。我也尝试将其声明为静态,但它给了我一个错误:that is "" Static function declared but not defined""。 我错过了什么? 注意:我包含了课程1级的头文件。

2 个答案:

答案 0 :(得分:2)

我的猜测是你在Class1中声明并定义了call_thread():

class Class1
{
    public:
    int call_thread(){...}
}

然后你试图在类位置调用这个方法:

void position::tick(schedflags_t flags) 
{
    call_thread();
}

call_thread()是一个Class1成员函数,你需要一个Class1实例来调用它,如果它是静态成员你需要一个类名:

void position::tick(schedflags_t flags) 
{
    //for static member
    Class1::call_thread(); 

    //for instance member
    Class1 object;
    object.call_thread();
}

答案 1 :(得分:1)

如果你有类,你应该有对象,这样你就可以调用公共方法(函数)。

尝试以下内容:

Class1.h中的

class Class1{ 
public:
  Class1(); //constructor
  ~Class1(); //destructor

  int call_thread();
}

然后在Class2中你应该有一个对象,如:

void position::tick(schedflags_t flags) 
{
  Class1 obj;
  obj.call_thread();
}