请问C++如何判断一个类中是否有某变量

比如
struct people
{
int a;
int b;
}people1;
我现在想判断people1中是否有成员c.应该怎么做呢?

概括的说,c++不支持直接通过程序判断类中是否存在成员(不像java,c#有Meta信息,可以这么做)。若要知晓,一般是遵循以下三种做法:

首先,标准库都有相关文档(请在MSDN搜索),说明文件中会告诉你类中都有哪些变量。这是最常用的方式。

其次,如果是引用第三方的类库,你会包含他/她写的头文件,这个结构/类会在头文件里有完整的声明结构,可以打开此头文件查看。这也是很常用的方式。

最后,真的不行,还有一个比较dirty的办法,以楼主的例子为例,在main函数里写一句:
cout<<people1.c<<endl;
然后编译,连接,如果编译通过,则c存在,如果编译出错则c不存在。(问题在于,这样做并不能知道c的类型)
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-20
struct{};这是定义结构类型的,不是类的。
变量People1具有的成员就是事先定义people时定好的。
所以不用判断了,变量people1肯定没有成员C。
第2个回答  2010-08-09
你的问题莫名其妙。什么叫做“有成员c”??一个类的成员完全是编程的时候就定义好的,编译器要求你必须知道一个class到底有那些成员。如果没有定义,难道是运行的时候才定义啊???运行的时候,根本没有什么a,b,c,都是些32位的地址而已。

而且假设你能知道“是否有成员c”,有什么用???
第3个回答  2010-08-09
编程规则:
先定义,再使用;所以不存在你所说的“人工智能”。这个语言还有待开发。
第4个回答  2010-08-09
你运行下,要是系统出错说,没有c存在,那就不存在,这个就是逆向的智能c++。

请问C++如何判断一个类中是否有某变量
概括的说,c++不支持直接通过程序判断类中是否存在成员(不像java,c#有Meta信息,可以这么做)。若要知晓,一般是遵循以下三种做法:首先,标准库都有相关文档(请在MSDN搜索),说明文件中会告诉你类中都有哪些变量。这是最常用的方式。其次,如果是引用第三方的类库,你会包含他\/她写的头文件,这个结...

C++中怎么检测一个结构体中是否存在某个变量
c++ 是一门没有反射机制的语言,所以你想要的功能是没有的。c++ 和java这种半解释型的语言不通,java编译只是生成字节码,在运行的时候会 载入 JVM,所以在程序运行中,仍然可以知道这个的类型,变量,函数,annotation等信息。但c++ 不同,虽然他有原型声明,但那是在编译的时候用的。在程序运行中,...

在c++中定义类,类中的变量是全局变量还是局部变量,还是需要什么关键词...
类中的变量没有全局变量的说法,只有成员变量和静态成员变量的说法(用static声明)类只是一种数据结构,只有类的实例才有意义

c++中有没有这样一个变量,赋其初值为1,并对其进行加1。当我关闭程序后...
不一定。是否赋初始值是按照编程的实际需要来确定的。1 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。所以当这类变量的初始值要求为0,或者不关心初始值时,定义时不需要赋初值,这样可以提高效率。2 对于局部变量,如果没有赋初值,那么默认为随机值,即什么值都有可能。对于此...

c++中怎么判断一个string类型的字符串变量是否为数字
c库<ctype.h>提供了一些函数,可以用来判断一个字符是不是数字。不过并没有提供用来判断一个字符串的函数。所以你需要自己遍历字符串,用ctype库提供的函数来判断字符串中的每一个字符。很简单事,一个循环就可以。ctype提供的函数有:isalnumCheck if character is alphanumeric (function )isalphaCheck ...

c\/c++如何判断变量的数据类型?
c\/c++判断变量的数据类型可以采用下面的代码:include <typeinfo> using namespace std;...cout << typeid(d).name() << endl;

C++类中成员属性,对本类而言,成员属性是否可以理解为本类的全局...
不可以这么理解的哟,全局变量是公用的,谁都可以修改的,而实例化后,类的成员变量只能是实例化的对象所拥有。我举个例子,你们家是一个class,你家里的每一个人可以理解为类的实例化对象,比如说你的手为成员变量,这个是成员变量只有你自己可以控制使用,而别的实例化对象无法使用。

C++如何在一个类中引用另一个类的变量
1.两个都是类,即类的静态变量(static修饰),一个类自然可以引用静态变量,因为静态变量是在程序进入main函数前就已经初始化完了。2.一个类A一个实例B(A类产生的对象),A当然无法在类的内部引用(即定义中),因为实例是在程序中动态分配的内存,类A必然先于实例B存在,所以A并不能知道B的存在。

c++中怎么判断一个string类型的字符串变量是否为数字?
你可以分别判断字符串中每个字符是否是数字,如果是则int i设为0,否则就设为1,只要有不是0的就判断为不是数字,否则就是数字

在Qt(或者C++)中,有没有办法得到一个类的变量的名字?
这是C++啊大哥,怎么都整成这样了!如果是在编译的时候,你有源代码的话这个就可以直接找了!如果是在运行时判断,应该就没办法了,因为C++编译器会把改名字改成另一个它在内存中的符号,并以该符号来标识这个变量,除非你知道编译器是怎么编译的,否则应该就不太可能了!

相似回答
大家正在搜