如何使用没有名字的c类?

如何使用没有名字的c类?,第1张

概述我在opensource c代码中遇到了问题.以下是描述我的问题的小型简化版本: #include <iostream>using namespace std;#define TOGETHER2(a,b) a ## b#define TOGETHER(a,b) TOGETHER2(a,b)#define GENERATE_NAME(a) TOGETHER(a,__COUNTER__)#d 我在opensource c代码中遇到了问题.以下是描述我的问题的小型简化版本:

#include <iostream>using namespace std;#define TOGETHER2(a,b) a ## b#define TOGETHER(a,b) TOGETHER2(a,b)#define GENERATE_name(a) TOGETHER(a,__COUNTER__)#define GENERATE     GENERATE_name(__seed_)class base{}b;class GENERATE:public base{}GENERATE;class GENERATE:public base{}GENERATE;class GENERATE:public base{}GENERATE;class GENERATE:public base{}GENERATE;int main(){    return 0;}

我们可以看到,作者定义了几个继承基类的类.但作者并不关心课程的名称.所以我想知道如何在不指定名称的情况下使用这些类?

这是c中我不知道的一种设计模式吗?

谢谢 :)

我想加上我的猜测,使问题清楚.

我的猜测:

这些类的名称是从__seed_生成的,但是当我搜索文件时,我找不到对__seed_的其他引用,所以我确信作者没有使用名称__seed_1,__ seed_2来创建类. (实际上作者说评论她并不关心课程的名称)

我还猜测作者可能已经通过基类(虚函数)中定义的接口使用了这些类.为此,作者仍然需要创建这些类,但正如我所提到的,我在代码的其他部分找不到__seed_,因此作者无法创建类,因此虚函数也不起作用.

实际上,我尝试删除这些类定义,奇怪的是代码编译正确.然而,它失去了一些功能,但它不仅仅是核心转储.它仍然可以成功地完成一些任务

那么,有谁知道:

>我们如何在不指定名称的情况下使用这些类?
>这种设计是某种设计模式吗?
>在哪种情况下我们应该定义课程而不关心他们的名字
>正如我所提到的,我删除了部分代码,并编译.怎么会发生这种情况?我的意思是,因为我从源代码中删除了许多类,所以如果代码的其他部分引用这些类,则源无法编译.如果它编译,我可以断定不需要那些类吗?

添加:
正如你们有些人推荐的那样
完整的源代码在这里:MIT Cryptdb.在文件./main/rewrite_const.cc中,作者使用宏ANON(狮子25)来定义许多类而不关心他们的名字.

真的很感谢你的帮助:)

解决方法 我建议您编辑代码并添加类的名称.这是一个奇怪的设计模式,我建议你不要使用这种模式,除非你想阻止其他人使用你的类.

如果作者希望您使用这些类,可能有一些方法可以在不编辑代码和添加名称的情况下使用它们.您应该参考文档.

As I mentioned,I removed some part of the code,and It compiled. How Could this happen? I mean,Since I remove many classes from the source code,then If other parts of the code references those classes,the source can not compile. And If it compiles,Can I just conclude that those classes are not needed?

所有这些生成的类都是从基类派生的.因此,如果删除一个类,则它之后的所有类都会收到一个新生成的名称.如果代码现在编译,则意味着其他代码仅调用属于基类的方法.但是其他代码现在使用的是其他类,而不是它最初使用的类,这会导致您观察到的错误.

考虑一下:

>最初生成的类具有名称A,B和C.>你删除A类.>现在生成的类具有名称A和B.名为C的类不再存在,因此使用它的代码不应再编译.而之前使用过A类和B类的代码,现在使用的是以前的B和C类.

总结

以上是内存溢出为你收集整理的如何使用没有名字的c类?全部内容,希望文章能够帮你解决如何使用没有名字的c类?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1217501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存