Я изучаю C ++, так что это может быть основным вопросом, однако это проблема реальной жизни.Мне нужно преобразовать строку в двойную, а затем, в свою очередь, в двойную * самым элегантным / современным способом (> C ++ 98).
Структура обеспечивается платформой на основе C (здесь я упростил код, поскольку это только суть проблемы), и я не могу изменить структуру, поскольку она взаимодействует с торговым приложением Metatrader4 с закрытым исходным кодом (не на основе С).Программный интерфейс требует, чтобы указатель был передан в структуру.
Строки читаются из файла CSV, содержащего дамп, который я взял из приложения Metatrader4.Детали которого выходят за рамки этой проблемы.Тем не менее, входные данные остаются строками и, следовательно, являются типом источника.
Я ценю, что метод, используемый в платформе, может быть старым, но это часть жизни.Это не значит, что я не могу стремиться сделать что-то лучше в своем коде, поэтому я и попросил элегантные / современные решения.Если они не существуют, я буду вынужден использовать новый, как кто-то уже предложил.
В настоящее время у меня есть следующий не работающий код:
#include <string>
struct bidAsk
{
double *bid;
double *ask;
};
int main()
{
bidAsk ba;
ba.bid = std::stod("1.100");
ba.ask = &std::stod("1.102");
}
Однако обавышеперечисленные методы преобразования завершаются с ошибками преобразования.
Первая строка приводит к ошибке, которая гласит:
E0513 a value of type "double" cannot be assigned to an entity of type "double *"
Вторая строка приводит к следующей ошибке:
E0158 expression must be an lvalue or a function designator
Я также попробовал static_cast, const_cast, make_unique и (double *) приведение без удачи.
Заранее спасибо.