Итак, у меня проблема.Моя цель состоит в том, чтобы перебрать тщательно составленный список, который я создал.Я хочу использовать std :: string в качестве аргумента оператора if, как указано ниже.Я знаю, что это не очень хорошая идея, даже больше: я знаю, что это может быть САМЫЙ ГЛАВНЫЙ способ сделать это.Неважно, я хочу знать, можно ли это сделать.Я пытался использовать функцию макроса, но я делаю это неправильно или использование такого макроса невозможно.Помоги мне, пожалуйста.У меня нет идей ...
Подобные макросы, которые я использовал в моем старом проекте, где я передал в качестве параметра имя функции (пользователь вводил имя такой функции, как 'sin' или 'tan') из cmath lib для вычисления интеграла для данной функции, поэтому я подумал, что это будет работать и в этом случае, но, видимо, нет.Он говорит:
условное выражение типа 'std :: string' недопустимо
//structures.h
struct node
{
int _value;
node *pNext;
};
//functions.cpp
#define retarded_at(x) x
#define retarded_stringify(y) retarded_at(y)
//@param pHead pointer to first element of the list
void retDispIter(node *pHead)
{
std::string at{ "pHead->pNext" };
while (retarded_at(at))
{
at += "->pNext";
//here send node->_value to std::cout
}
}
Внутри первого цикла while "at" будетбыть 'pHead-> pNext' указывать на следующий элемент.С 8 элементами в списке последнее время будет выглядеть так:
while(pHead->pNext->pNext->pNext->pNext->pNext->pNext->pNext->pNext)
вернет false, а "at" будет содержать указатель (nullptr) на несуществующий 9-й элемент.