Tag: oop

面向对象的ANSI C?

可能重复: 你能用C编写面向对象的代码吗? 你好, 我想知道是否可以使用严格的ANSI C作为面向对象的语言。 如果可能,我如何在ANSI C中创建一个类。虽然该语言不是为OO设计的,但我真的很想尝试这个。 任何例子,链接等都是值得赞赏的。 提前致谢, Marnix van Rijswijk。

需要帮助将C函数转换为Objective C方法

我有一个用C编写的函数,它相当大,目前只在C文件的main()函数中运行,而我一直在测试它。 这是它的声明 void getData(const char* encodedBuffer, int user); 如果你想看到getData的内容,那么这就是它的pastebin。 截至目前,我只是传递encodedBuffer,我将有一个全局变量,由getData函数更新。 我想知道将这样的基于C的函数转换为Objective-C协议方法的正确方法是什么。 现在我正在这样设置它 iDriver.h(我的界面/协议) #import @protocol iDriver -(void)getData; -(void)cancel; @end DriverOne.h(实际实现协议方法的类) #import #import “iDriver.h” @interface DriverOne : NSObject @end DriverOne.m #import “DriverOne.h” @implementation DriverOne enum Status getData(char* encodedBuffer, int user) { // Copy C code which I showed in the link earlier // to above into […]

C中的类(不是C ++)

我在一个西class牙语网站( http://trucosinformaticos.wordpress.com/2010/12/12/programacion-orientado-a-objetos-en-c/ )中发现了这个黑客攻击。 我想在C(而不是C ++)中创建一个“类”,但是当我编译时,我获得了下一个错误: source.c(25): warning C4047: ‘function’ : ‘Car’ differs in levels of indirection from ‘Car *’ source.c(25): warning C4024: ‘changeYears’ : different types for formal and actual parameter 1 这是我的代码: #include typedef struct Car* Car; // class Car // { struct Car { int years; //char model[100]; }; void changeYears(Car this, int […]

C中的OOP,实现和bug

我正在尝试在C中探索OOP。但我是一个C n00b并且想要选择stackoverflow的精彩大脑:) 我的代码如下: #include #include typedef struct speaker { void (*say)(char *msg); } speaker; void say(char *dest) { printf(“%s”,dest); } speaker* NewSpeaker() { speaker *s; s->say = say; return s; } int main() { speaker *s = NewSpeaker(); s->say(“works”); } 但是我从这里得到了一个段落错误,但是如果我删除所有的args并使其无效,我可以让它正常工作。 我目前的代码有什么问题? 也。 虽然这在C中实现了一种forms的对象,但我正在尝试使用inheritance,甚至覆盖/重载方法来进一步实现它。 您认为我怎么能实现这样的? 谢谢!

C的文件是否具有面向对象的界面?

通过标准C函数fopen等使用的FILE类型是否具有面向对象的接口? 我正在寻找有推理的意见,而不是绝对的答案,因为OO的定义因你提出的问题而异。 它遇到或不符合的重要OO概念是什么? 在回答下面JustJeff的评论时,我不是在问C是否是OO语言,也不是C(容易与否)是否允许OO编程。 (这不是一个单独的问题吗?)

C中的OO多态性,混叠问题?

我和一位同事正试图实现一个简单的多态类层次结构。 我们正在研究嵌入式系统,仅限于使用C编译器。 我们有一个基本的设计思想,在没有警告的情况下编译(-Wall -Wextra -fstrict-aliasing -pedantic),并且在gcc 4.8.1下运行正常。 但是,我们有点担心别名问题,因为我们还不完全了解何时出现问题。 为了演示我们已经编写了一个带有“接口”IHello的玩具示例和两个实现此接口“Cat”和“Dog”的类。 #include /* ——– IHello ——– */ struct IHello_; typedef struct IHello_ { void (*SayHello)(const struct IHello_* self, const char* greeting); } IHello; /* Helper function */ void SayHello(const IHello* self, const char* greeting) { self->SayHello(self, greeting); } /* ——– Cat ——– */ typedef struct Cat_ { […]

用类加入C

免责声明:我是C的完全新手,但我一直在尝试模仿一些类的function。 好吧, 我知道如果我想这样做,我应该学习C ++,但请考虑以下一点实验 。 Schreiner,在使用ANSI-C的面向对象编程一书中提出了一种使用指针在C中获取面向对象特征的方法。我必须承认我只是浏览了这本书,但我不太喜欢他的方法。 基本上,他使用函数指针来安排 func(foo); 实际上导致了呼唤 foo.methods->func(); 其中foo.methods是一个包含函数指针的结构。 在这种方法中我不喜欢的是,无论如何必须拥有全局函数foo ; 也就是说,方法没有被它们所居住的类命名。我的感觉是这很快就会导致混乱:想想两个对象foo和bar ,它们都有方法func但参数数量不同。 所以我试图找到更符合我口味的东西。 第一次尝试是以下(为了简洁我省略了声明) #include //Instances of this struct will be my objects struct foo { //Properties int bar; //Methods void (* print)(struct foo self); void (* printSum)(struct foo self, int delta); }; //Here is the actual implementation of the methods static […]

C是面向对象的程序员

学习了Java和C ++之后,我学会了OO方式。 我想开始一个相当雄心勃勃的项目,但我想用C语言做。我知道如何将问题分解为类以及如何将它们转换为类层次结构。 我知道如何将function抽象为抽象类和接口。 我甚至精通以有效的方式使用多态。 问题在于,当我遇到问题时,我只知道如何做到这一点是以面向对象的方式。 我变得过于依赖面向对象的设计理念和方法。 我想学习如何以严格的程序方式思考。 如何在缺少类,接口,多态,函数重载,构造函数等的世界中做事情。 如何仅使用非面向对象的struct来表示复杂的概念? 你如何解决缺乏函数重载的问题? 以程序方式思考的一些提示和技巧是什么?

如何从C-File调用C ++构造函数

我导入了这个程序,它解析了很多复杂的文本,用C语言编写。我自己的项目是用C ++编写的。 我实际上打算,每当解析器算法找到一个关键标签时,我的类的一个(很多)构造函数应该被调用,这样我在txt的末尾就会有一个很好的结构,如同解析过程的结果。 问题在于 :我用Java学习了OOP并用这个项目启动了C ++,所以我需要一些帮助:如何从基于C的解析器文件中调用C ++构造函数? 我已经检查了互联网,但要么这个问题太微不足道了,要么我的预期解决方案无效;) 谢谢你的任何建议。

什么时候使用C作为面向对象的语言?

有很多优秀的答案如何用C模拟面向对象的概念。仅举几例: 带有抽象数据类型的C双链表 C作为面向对象的语言 你能用C编写面向对象的代码吗? 何时适合使用此类模拟而不使用本机支持面向对象技术的语言? 高度相关: 为什么人为地将代码限制为C? https://stackoverflow.com/questions/482574/whats-the-advantage-of-using-c-over-c-or-is-there-one