私は、学校の友人グループと C で単純な 2D ゲーム エンジンを作成している最中です。クラスとして、関数ポインタをメソッドとして使用するなどして、このエンジンをオブジェクト指向の方法で記述したいと考えてstructs
います。標準の OOP 構文をエミュレートするcreate()
ために、オブジェクトにメモリ内の領域を割り当てる関数を作成しました。現在テスト中ですが、エラーが発生しています。テストに使用している2つのファイルのコードは次のとおりです。
test.c:
#include <stdio.h>
int main()
{
typedef struct
{
int i;
} Class;
Class *test = (Class*) create(Class);
test->i = 1;
printf("The value of \"test\" is: %i\n", test->i);
return 0;
}
ユーティリティ.c:
#include <stdio.h>
#include <stdlib.h>
#include "utils.h"
void* create(const void* class)
{
void *obj = (void*) malloc(sizeof(class));
if (obj == 0)
{
printf("Error allocating memory.\n");
return (int*) -1;
}
else {
return obj;
}
}
void destroy(void* object)
{
free(object);
}
このutils.h
ファイルは、create()
およびdestroy()
関数のプロトタイプを保持するだけです。
を実行するgcc test.c utils.c -o test
と、次のエラー メッセージが表示されます。
test.c: In function 'main':
test.c:10:32: error: expected expression before 'Class'
私はそれがtypedef
最初に私と関係があること、そしておそらく適切な構文を使用していないことを知っています。しかし、その適切な構文が何であるかはわかりません。誰でも助けることができますか?