如何访问用户选择的结构变量 C++
How to access user-chosen struct variable C++
我正在使用一个函数从链表中打印出数据,列表节点有 2 个可以访问的变量,数据或索引。我想向 print() 函数添加一个参数,允许用户在他们想要输出的节点中调用变量名称,我听说过通过引用传递,我很确定这就是我想要的要做但还没有找到任何实际适用于我的代码的资源。
(只是想传递一个变量名给函数)
这是我的代码:
struct Node {
int data;
int index;
Node *next;
}
Node *_current;
Node *_next;
Node *_head;
Node *_temp;
Node *_tail;
Node *_last;
// all this is handled correctly
void print(*variable name*) {
Node *n = _head;
while (n->next != nullptr) {
std::cout << n-> *variable name* << std::endl;
n = n->next;
}
}
p.s: 变量名不一定是指针,只是(字面上)引用我要添加的变量名参数。
如果我将 变量名 换成 'std::cout << n->data <<...' 并且运行没有任何其他问题,则此代码有效。 (顺便说一句,没有提供完整的代码,只提供了解释我想要更改的内容所需的部分)
非常感谢任何有用的信息,提前致谢。 :)
p.s: variable name is not necessarily a pointer
但它是一个指针。成员指针,具体为:
void print(int Node::*member) {
Node *n = _head;
while (n->next != nullptr) {
std::cout << n->*member << std::endl;
n = n->next;
}
}
它会被调用为
print(&Node::data);
或
print(&Node::index);
可以传入一个字符串。
void print(const string& str) {
Node *n = _head;
if(str.compare("index")==0){
while (n->next != nullptr) {
std::cout << n->index << std::endl;
n = n->next;
}
}
else if(str.compare("data")==0){
while (n->next != nullptr) {
std::cout << n->data << std::endl;
n = n->next;
}
}
}
我正在使用一个函数从链表中打印出数据,列表节点有 2 个可以访问的变量,数据或索引。我想向 print() 函数添加一个参数,允许用户在他们想要输出的节点中调用变量名称,我听说过通过引用传递,我很确定这就是我想要的要做但还没有找到任何实际适用于我的代码的资源。
(只是想传递一个变量名给函数)
这是我的代码:
struct Node {
int data;
int index;
Node *next;
}
Node *_current;
Node *_next;
Node *_head;
Node *_temp;
Node *_tail;
Node *_last;
// all this is handled correctly
void print(*variable name*) {
Node *n = _head;
while (n->next != nullptr) {
std::cout << n-> *variable name* << std::endl;
n = n->next;
}
}
p.s: 变量名不一定是指针,只是(字面上)引用我要添加的变量名参数。
如果我将 变量名 换成 'std::cout << n->data <<...' 并且运行没有任何其他问题,则此代码有效。 (顺便说一句,没有提供完整的代码,只提供了解释我想要更改的内容所需的部分)
非常感谢任何有用的信息,提前致谢。 :)
p.s: variable name is not necessarily a pointer
但它是一个指针。成员指针,具体为:
void print(int Node::*member) {
Node *n = _head;
while (n->next != nullptr) {
std::cout << n->*member << std::endl;
n = n->next;
}
}
它会被调用为
print(&Node::data);
或
print(&Node::index);
可以传入一个字符串。
void print(const string& str) {
Node *n = _head;
if(str.compare("index")==0){
while (n->next != nullptr) {
std::cout << n->index << std::endl;
n = n->next;
}
}
else if(str.compare("data")==0){
while (n->next != nullptr) {
std::cout << n->data << std::endl;
n = n->next;
}
}
}