我有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级的头文件。
答案 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();
}