这是一个有点离奇的问题.我的目标是理解语言设计决策并确定C++中反射的可能性.
为什么C++语言委员会不会在语言中实现反思?对于不在虚拟机上运行的语言(如java),反射是否太难?
如果要实现C++的反射,那么挑战是什么?
我想反射的使用是众所周知的:编辑器可以更容易编写,程序代码更小,可以为单元测试生成模拟等等.但是,如果你也可以对反射的使用发表评论,那就太棒了.
但是我想在R中这样做.
我有:
ret_series <- c(1, 2, 3)
x <- "ret_series"
Run Code Online (Sandbox Code Playgroud)
如何(1, 2, 3)在x不直接提及的情况下调用某些函数/操作ret_series?
我想将一些数据输出到文件中.例如假设我有两个双打向量:
vector<double> data1(10);
vector<double> data2(10);
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法将其输出到文件,以便第一行包含标题'data1'和'data2',后跟实际内容.输出数据的函数将传递各种不同的数组,因此不可能硬编码标题的名称 - 理想情况下,我想将变量名称转换为某个字符串,然后输出该字符串,后跟向量数组的内容.但是,我不确定如何将变量名'data1'转换为字符串,或者确实如果它可以很容易地完成(从阅读论坛我的猜测是不可以)如果这是不可能的替代可能是使用关联容器(如map)或更简单的"对"容器.
pair<vector<double>,string> data1(10,'data1');
Run Code Online (Sandbox Code Playgroud)
欢迎大家提出意见!
是否可以通过执行以下操作将字符串转换为变量(反之亦然):
makeVariable("int", "count");
Run Code Online (Sandbox Code Playgroud)
要么
string fruit;
cin >> fruit; // user inputs "apple"
makeVariable(fruit, "a green round object");
Run Code Online (Sandbox Code Playgroud)
然后能够通过执行以下操作来访问它:
cout << apple; //a green round object
Run Code Online (Sandbox Code Playgroud)
提前致谢!
可能重复:
将字符串转换为变量名称或变量类型
如何在c ++中将字符串值用作变量名
string listName = "hari";
string vectorName = "BF_vector_"+listName;
vector<string> vectorName;
vectorName.push_back("Some Value");
Run Code Online (Sandbox Code Playgroud)
如何使用vectorName的字符串值("BF_vector_hari")作为向量的变量名.提前致谢.
假设我有一个包含6组的结构bbox,其中每组包含4个向量.我可以使用bbox.set1.vect1.push_back(foo)添加一个vector元素.但是,我正在从文件中读取数据,而我正在寻找一种将数据存储在向量中的优雅方法.使用带有索引i(1到6)和k(1到4)的double for()循环我尝试了以下(使用字符串连接):
string test1 = "bbox.set";
string test2 = ".vect";
string fin = test1 + to_string(i) + test2 + to_string(k);
fin.push_back(val);
Run Code Online (Sandbox Code Playgroud)
虽然代码编译得很好,但似乎没有任何事情发生.明确地写bbox.set1.vect1.push_back(foo)确实有效.这可以这样做吗?在另一个主题中,我读过C不支持在运行时更改/创建变量名,但在这里我只是尝试访问现有变量.
我的意思是,我如何使用我可以迭代的char来识别变量?因此,如果:
int cheese = 1337;
string identifier = "cheese";
Run Code Online (Sandbox Code Playgroud)
如何使用此字符串"identifier"来标识变量cheese并返回其值?