【发布时间】:2019-02-28 12:35:08
【问题描述】:
我在尝试调用我的 DogClass 的“talk”函数时收到以下错误: 'talk' 不是 _DogFile 的成员。
其实我已经在_DogFileClass结构体中声明了狗文件, 在 class_init 中,我指向 talk 函数。 如何从类的实例中访问类方法?
我包括相关代码:
狗.h:
struct _DogFileClass
{
GObjectClass parent_class;
void (*talk)(DogFile *self)
}
void dog_file_talk(DogFile *self);
狗.c
void dog_file_real_talk(DogFile *self);
void dog_file_class_init(DogFileClass *klass)
{
klass->talk = dog_file_real_talk;
}
void dog_file_talk(DogFile *self)
{
g_return_if_false(DOG_IS_FILE);
DogFileClass *klass = DOG_FILE_GET_CLASS(self);
return klass->talk(self);
}
dog_file_real_talk(DogFile *self)
{
printf("WOOF")
}
最后我想通过以下方式使用通话功能:
dog->talk(dog);
当 dog 是 DogFile 类的指针时
【问题讨论】:
-
你为什么用
.cpp后缀写c代码?!它将通过 C++ 编译器 -
我的错,不小心写了cpp