c++指针有帮助
C++ Pointers help?
我需要在c++中使用指针的一点帮助。很抱歉我是初学者,但我真的不太懂它们。我已经在cplusplus.com网站上阅读了关于指针的教程,所以请不要建议。
我基本上有一个变量,它包含另一个变量的名称,并且我希望通过holder访问该变量。我相信我需要使用指针,如果我错了,请纠正我。
。
int a;
string b;
a = 10;
b = "a";
我需要通过变量"b"的内容访问变量"a"。
为了更好地理解这一点,我是这样使用它的:
int a;
a = 20;
void getVar(string name) {
cout << name;
}
getVar("a");
但是正如你所看到的,在第五行,它只会计算name的值,在这个例子中是"a",但是我想让它计算name包含的变量的值,所以我想让它输出"20"
如果您需要将名称与值关联,请考虑关联数组,或者称为字典和映射。标准模板库有std::map
,您可以使用它将文本与值关联:
#include <map>
#include <string>
std::map<std::string, int> my_map;
my_map["A"] = 20;
cout << my_map["A"] << endl;
你正在考虑的被称为(反射),这是c++不支持的。但是,您可以使用指针来访问它指向的变量中的内容:
int a = 5; //int variable that stores 5
int *b = &a; //int pointer that stores address of a
(*b) = 10; //stores 10 into address that b points to (a)
cout << a; //prints 10
您试图实现的目标在编译语言中是不可能的(不考虑反射)。您可以使用映射数据结构完成类似的工作。
theMap["a"] = 20;
和相应的
void getVar(string key){
cout << theMap[key];
}
可以用
调用的getVar("a");
注意,在这个极其简单的示例中,theMap必须在函数的作用域中,就像在类或名称空间中一样。
如果你使用指针,你只是使用了一个不适合你的例子的间接层次。例如,参见Chads的回答。
没有真正的方法可以像这样通过名称访问变量,除非你创建了某种容器类,它有一个name成员供你查找。我不确定这和指针有什么关系
你所要求的被称为"反射"或"自省"——在运行时为程序的对象(类、变量、函数等)使用设计时名称的能力。c++不支持这种开箱操作——设计时名称在编译时被剥离。
在c++中有一些库提供了这个功能;但也有一些语言,反射是语言的一部分。例如,Python或JavaScript。
也许这适合你:
int a = 5;
class b {
public:
b(int &x) { ref_ = x; }
int operator()(void) { return ref_; }
private:
int &ref_;
}
b my_b(a);
my_b() /* -> 5 */;
你的代码没有使用指针。你试图将字符串转换为标识符并打印它的结果,我不知道这是否可能。如果你打算使用指针,你的代码应该像这样:
int a = 20;
int* b = &a;
cout << *b;
仅输出整数的快速修复:
int;A = 20;
void getVar(int name) {cout & lt; & lt;名称;}
getVar (a),
如果你需要函数对任何类型的变量都有效,也许可以考虑使用模板函数。
编辑:下面是模板程序的代码:
#include <iostream>
#include <string>
using namespace std;
template <class T>
void getVar(T name){
cout<<name<<endl;
}
int main()
{
string x="hee";
int y=10;
getVar(x);//outputs hee
getVar(y);//outputs 10
return 0;
}
- 如何获得GUID编码器,如果我在IMFTransform上有一个指针?
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- C++ - 有人有分析指针到指针问题的技巧吗?
- 是否有功能指针的爆炸
- 为什么std::optional有类似指针的开销
- 对理解C++代码的流执行稍有帮助
- RAII理解-有界指针的重音方法
- 是否有可能有一个指针指向由奇怪的递归模板创建的基类
- 是“警告 C4127”(条件表达式是常量)曾经有帮助
- 尝试区块对于"zero-cost"堆栈平仓策略是否必要甚至有帮助?
- 为什么内联模板专业化有帮助?我应该这样做吗
- 可视化C++,每个都有一个指针
- C++ 将多头、空头和所有整数转换为uint32_t、int32_t等是否有帮助
- 我可以在对象中有一个指针向量 *** p 吗?
- 在下面的例子中,如何在C++中使用智能指针有帮助
- std::chrono中是否有帮助注入system_clock进行单元测试的设施
- 静态关键字在这里有帮助吗?
- 从Cocos2d::Layer派生的类有一个指针数据成员.这个元素也有一个向量容器.调用vector::push_bac
- .get() 和 -> 之间有智能指针的区别吗?
- c++指针有帮助