2

我有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 类的头文件。

4

2 回答 2

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();
}
于 2013-06-18T12:18:25.553 回答
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();
}
于 2013-06-18T12:32:17.607 回答