什么是一组漂亮的预处理器黑客(ANSI C89/ISO C90兼容),它在C中实现某种丑陋(但可用)的面向对象?
我熟悉一些不同的面向对象语言,所以请不要回答"学习C++!"这样的答案.我读过" 面向对象的ANSI C编程 "(当心:PDF格式)和其他一些有趣的解决方案,但我最感兴趣的是你:-)!
另请参见您能用C编写面向对象的代码吗?
好的,你可以叫我一个菜鸟,但我很困惑.
我的前同学付钱让我在C写一个程序.她给了我一个任务,它说了一句"等等等等至少两个类,编写至少一个构造函数并重写至少一个方法 "它一字一句地说.
然后我告诉她"这是C++而不是C"她说"但我们正在学习C"
我忽略了它并用c ++编写程序并发送给她,因为我以为她不知道她在说什么.她说"它不适用于代码块,wtf是cout <<",然后她发给我一大堆他们写的代码而不是cout和cin有printf和scanf.它必须是C.所以,我用printf和scanf重新编写了程序,她仍然说代码块抛出错误(我仍然把类作为任务要求).
C有班级吗?还是有误会或什么?
我被限制在比赛中使用 C,我需要模拟课程。我正在尝试构建一个简单的“点”类,它可以返回并设置一个点的 X 和 Y 坐标。然而,下面的代码返回诸如“未知类型名称点”、“预期标识符或(”和“预期参数声明符”等错误。这些错误是什么意思?我该如何纠正它们?这是编写“的正确方法”伪类”?
typedef struct object object, *setCoordinates;
struct object {
float x, y;
void (*setCoordinates)(object *self, float x, float y);
void (*getYCoordinate)(object *self);
void (*getXCoordinate)(object *self);
};
void object_setCoordinates(object *self, float x, float y){
self->x = x;
self->y = y;
}
float object_getXCoordinate(object *self){
return self->x;
}
float object_getYCoordinate(object *self){
return self->y;
}
object point;
point.setCoordinates = object_setCoordinates;
point.getYCoordinate = object_getYCoordinate;
point.getXCoordinate = object_getXCoordinate;
point.setCoordinates(&point, 1, 2);
printf("Coordinates: X Coordinate: %f, Y Coordinate: %f", point.getXCoordinate, point.getYCoordinate); …
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在C中实现一个类?
在我的测试中,我被告知我需要找到一种方法来在C中实现以下类
class A
{
private:
int a,b;
public:
void func1();
int c,d;
protected:
int e,f;
void fun();
};
Run Code Online (Sandbox Code Playgroud)
C编译器是否也支持访问说明符私有,公共和受保护的内部结构?