社区
C++ 语言
帖子详情
动态读取变量
nicochang
2003-12-19 06:01:54
假设object是一个对象,里面有Name,Id,Number等成员变量。
var是一个变量
我想实现的是这样一种功能,比如var的值是Name,那么我就可以取得object.Name中的值
如果var的值是Id,那么我就可以取得object.Id中的值
也就是,我不想建立一个switch case 的映射,有没有办法实现
...全文
43
9
打赏
收藏
动态读取变量
假设object是一个对象,里面有Name,Id,Number等成员变量。 var是一个变量 我想实现的是这样一种功能,比如var的值是Name,那么我就可以取得object.Name中的值 如果var的值是Id,那么我就可以取得object.Id中的值 也就是,我不想建立一个switch case 的映射,有没有办法实现
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
newegg2002
2003-12-20
打赏
举报
回复
to plainsong(短歌)
我太菜了,想就他的程序问大家几个简单的问题,希望大家给我解答一下,
我谢谢大家了,!@!!
1.我的编译器也是VC6.0的,可是加了#include<string.h>或者是#include <string>
using namespace std;
都不能构造string的对象.粘下来的贴子,只要有这样的语句,编译器就老提醒:没定义
2.定义变量的时候,std::string是不是随意的呢,我想应该不是啊,他是什么意思啊,
3.那个回车符为什么非得用std::endl,只用endl不也行吗,怎么就,不行啊,
还有就是,我有点小建议,上面的那个程序,main()函数忘了加返回语句
nicochang
2003-12-19
打赏
举报
回复
刚刚回来,谢谢大家,你们的意思是用模板来做,模板不是很熟悉,要去看看,看看能不能实现
实际上,问题是这样:有若干个lib,这些lib中都有很多的成员变量,有的有100多了,都是数据库中字段的映射,这一次需要解决的问题是,程序运行时其他的组件会传给我一个变量,这个变量的值就是某一个lib中的一个成员变量的名字,改动lib是不可能的,而用switch...case ,实现一方面太麻烦,另一方面如果lib变动,这也要作相应的修改
qhgary
2003-12-19
打赏
举报
回复
不是不可能,但是在C++中可能比较困难,因为它要求他们在类型上面至少要有共性,这在Java中,或者C#中就能够实现,因为他们都派生于某一特殊根类
glacierrr
2003-12-19
打赏
举报
回复
struct var
{
enum type;// { int, char, float.....}
union value
{
int iValue;
float lValue;
......
};
};
abitz
2003-12-19
打赏
举报
回复
#include <iostream>
#include <string>
using namespace std;
class test
{
public:
test(const string& name = string(), const string& id = string(),
const string& number = string())
: name_(name), id_(id), number_(number) { }
string name_;
string id_;
string number_;
};
void main()
{
size_t var;
string test::*members[] = { &test::name_, &test::id_, &test::number_ };
test a("liukai", "abitz", "100031100");
cin >> var;
cout << a.*members[var];
}
短歌如风
2003-12-19
打赏
举报
回复
首先要求Name、Id、Number等变量类型相同。下面假设是std::string类型:
#include<iostream>
#include<string>
class Foo
{
public:
std::string Name;
std::string Id;
std::string Number;
};
typedef std::string Foo::*var_t;
int main()
{
var_t Var;
Foo a,b;
a.Name = "a";
a.Id = "1";
a.Number = "123";
b.Name = "b";
b.Id = "2";
b.Number = "122";
Var = &Foo::Name;
std::cout << a.*Var << " " << b.*Var << std::endl;
Var = &Foo::Id;
std::cout << a.*Var << " " << b.*Var << std::endl;
Var = &Foo::Number;
std::cout << a.*Var << " " << b.*Var << std::endl;
std::cin.get();
}
langzi8818
2003-12-19
打赏
举报
回复
var是什么类型的变量你自己不知道吗?
不太知道楼主的意思
soyan
2003-12-19
打赏
举报
回复
把var定义为字符型变量,Name ,Id ,Number都存为字符型就可以了
antijpn
2003-12-19
打赏
举报
回复
首先你要确定var是什么类型的变量,如果这一点无法确定,后面的操作根本无法展开。
不用switch case那就要用if else了,更麻烦
C#访问OPC
读取
数据
C#访问OPC
读取
数据 一般用于自动化编程
linux如何
动态
加载
动态
库
1.定义函数指针类型 要根据
动态
库中药使用的函数,在外面定义同样类型的函数指针类型,供以后使用typedef unsigned long(*POpenDev)(IN unsigned long int); 2. 定义函数指针POpenDev OpenDev; 3.
动态
加载
动态
库 HANDLE sohandle = NULL;sohandle = dlopen("libNiKeyDll.so"
python怎么
读取
环境
变量
?
这个方法返回一个表示环境
变量
的字典,你可以像操作字典那样操作它。如果尝试访问的环境
变量
不存在,它将引发一个。这使得你可以在没有设置特定环境
变量
的情况下更容易地运行你的程序,只需提供一个默认值即可。在上述两种方法中,‘VAR_NAME’ 需要替换为你想要
读取
的实际环境
变量
名。: 这种方法会返回指定环境
变量
的值,如果环境
变量
不存在,则返回。如果你在Python程序中需要
读取
环境
变量
,我推荐使用。这里,如果 ‘VAR_NAME’ 环境
变量
不存在,,因为它不会在
变量
不存在时引发错误,而是返回。
Maven
读取
环境
变量
Maven
读取
环境
变量
2017年01月05日 12:17:48 hongweigg 阅读数:7721 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongweigg/article/details/54091148 maven
读取
环境
变量
的值可使用${env.yourkey}来
读取
,其中yourkey为
变量
名称。 参考...
python 用字符串的方式
读取
变量
名;字符串变成同名
变量
名
用字符串的方式
读取
变量
名, locals() 函数会以字典类型返回当前位置的全部局部
变量
。 输入 bili = 5 print(locals()['bili']) 输出 5 字符串变成同名
变量
名 输入 import inspect, re def varname(p): for line in inspect.getframeinfo(inspect.currentframe().f_b...
C++ 语言
65,209
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章