如何从一系列变量中找出类型相同的变量?

lujun5100 2006-11-13 09:52:17
现在有一组已经定义的变量,要将这组变量中类型相同的找出来。

哪位大大知道怎么做,完全没有想法阿。

另外,我是用C地,最好用C,其他语言也能接受


比如:int a1,a2,a3; float a4,a5,a6; struct star a7,a8; char a9,a10;

...全文
344 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lujun5100 2006-11-14
  • 打赏
  • 举报
回复
楼上的这个看起来不错
就是俺的C++不怎么样,先知道下吧,说不定哪天用的上
jixingzhong 2006-11-14
  • 打赏
  • 举报
回复
typeid可以用于作用于各种类型名,对象和内置基本数据类型的实例、指针或者引用,当作用于指针和引用将返回它实际指向对象的类型信息。typeid的返回是type_info类型。

  type_info类:这个类的确切定义是与编译器实现相关的,下面是《C++ Primer》中给出的定义(参考资料[2]中谈到编译器必须提供的最小信息量):

class type_info {
private:
type_info(const type_info&);
type_info& operator=( const type_info& );
public:
virtual ~type_info();
int operator==( const type_info& ) const;
int operator!=( const type_info& ) const;
const char* name() const;
};


所以,
比较这个 类型 的name 串是否是一致的,
就可以知道类型是否是一样的了 ~~


比如:
enum ClassType{
UObjectClass,
URectViewClass,
UDialogClass,
……
};
class UObject{
virtual char* GetClassName() const {
return "UObject";
};
virtual ClassType TypeOfClass(){
return UObjectClass;
};
};
class UDialog{
virtual char* GetClassName() const {
return "UDialog";
};
virtual ClassType TypeOfClass(){
return UDialogClass;
};
};

  示例:

UObject po=new UObject;
UObject pr=new URectView;
UObject pd=new UDialog;
cout << "po is a " << po->GetClassName() << endl;
cout << "pr is a " << pr->GetClassName() << endl;
cout << "pd is a " << pd->GetClassName() << endl;
cout<TypeOfClass()==UObjectClass< cout<TypeOfClass()==URectViewClass< cout<TypeOfClass()==UDialogClass< cout<TypeOfClass()==UObjectClass< cout<TypeOfClass()==UDialogClass<

  输出:

po is a UObjectClass
pr is a URectViewClass
pd is a UDialogClass
true
true
true
false
false
jixingzhong 2006-11-14
  • 打赏
  • 举报
回复
楼主你可以使用 C++,
用 typeid.name(a?)

比较这个 name 是否相同,
(它就是变量的类型)
相同的就是名字一样的 ~~
goodluckyxl 2006-11-14
  • 打赏
  • 举报
回复
对源文件进行扫描向楼上说可以但是工作量大
而且你做的好不好才是关键

笨一点在声明的时候做点手脚
对基本类型进行重定义时加进类型表
Aaron_Jerry 2006-11-14
  • 打赏
  • 举报
回复
用编译原理里讲的语法分析肯定是可以做的。建议楼主找个编译原理书看看把。
lujun5100 2006-11-14
  • 打赏
  • 举报
回复
sizeof好像不行,很多类型地字节数都是一样地,看不出来
lujun5100 2006-11-14
  • 打赏
  • 举报
回复
没有人考虑过这个问题吗?

大家都来顶顶吧,没人回答就算散分拉
agaric 2006-11-13
  • 打赏
  • 举报
回复
no way
ruodeer 2006-11-13
  • 打赏
  • 举报
回复
用sizeof??
Writer 2006-11-13
  • 打赏
  • 举报
回复
想不明白为什么你要这样做,这样做有什么好处?

如果你真的要实现这样的功能,我看只能用动态语言(PYTHON,LUA等都行)
mrzho 2006-11-13
  • 打赏
  • 举报
回复
恐怕比较困难,好像无法枚举定义的变量哈.学习中.
Aaron_Jerry 2006-11-13
  • 打赏
  • 举报
回复
这应该涉及到编译原理的语法分析了啊。
可惜我那方面的知识基本上还给老师了。呵呵~~

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧