いくつかの C++ コードを C に変換しようとしているのですが、いくつか問題が発生しています。
構造体内で関数を定義するにはどうすればよいですか?
このような:
typedef struct {
double x, y, z;
struct Point *next;
struct Point *prev;
void act() {sth. to do here};
} Point;
ベストアンサー1
struct
いいえ、 C ではa 内で関数を定義することはできません。
ただし、関数ポインターを持つstruct
ことは C++ のメンバー関数とは非常に異なります。つまり、それthis
を含むstruct
インスタンスへの暗黙的なポインターは存在しません。
架空のサンプル(オンラインデモ)http://ideone.com/kyHlQ):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct point
{
int x;
int y;
void (*print)(const struct point*);
};
void print_x(const struct point* p)
{
printf("x=%d\n", p->x);
}
void print_y(const struct point* p)
{
printf("y=%d\n", p->y);
}
int main(void)
{
struct point p1 = { 2, 4, print_x };
struct point p2 = { 7, 1, print_y };
p1.print(&p1);
p2.print(&p2);
return 0;
}