elelel/qluacpp

Как вызвать getItem?

mmonk1980 opened this issue · 24 comments

тут пишет ошибку:

auto item_t = q.getItem("all_trades", 0).price;

auto it = q.getItem<>("all_trades", 0);

выдает такую ошибку:

'qlua::api::getItem': no matching overloaded function found
'item_t qlua::api::getItem(const char *,const int) const': could not deduce template argument for 'item_t'

видимо функция не реализована.

Функция реализована, укажите получаемый тип данных, иначе его ваш компилятор не может вычислить.

А как правильно? Можете переписать эту строку? (getItem чтобы вoзращала price)

auto item_t = q.getItem("all_trades", 0).price;

auto it = g.getItem<ТИП_ДАННЫХ>("all_trades", 0);

price где?

all_trades много переменных где-то 50 штук.

нужно или таблицу вызывать и с ней работать или еще как?

getItem возвращает строку таблицы, чтоб ее вернуть, надо знать тип возвращаемой записи. Не компилировалось поэтому.
price - очевидно, это что-то внутри этой записи, и уже второй вопрос. Если в той структуре есть такое поле, то значит .price.
Последние ваши две реплики я не понял.

all_trades[9168]{
-- Table: {1}
{
["repoterm"]=0,
["price"]=55.64,
["trade_num"]=1757627137,
["yield"]=0,
["value"]=688325.88,
["qty"]=22,
["reporate"]=0,
["class_code"]="SPBFUT",
["repovalue"]=0,
["exchange_code"]="",
["accruedint"]=0,
["tradenum"]=1757627137,
["flags"]=1,
["datetime"]={2},
["sec_code"]="BRK7",
["seccode"]="BRK7",
["settlecode"]="",
["period"]=0,
["repo2value"]=0,
["open_interest"]=636304,
}

как узнать price?

в lua это делается легко:

t = getItem("all_trades", 743871).price

как c++ не вашей либой я не знаю.

мне кажется это не реализовано.

Если хотим вывести tradenum такой код: t = getItem("all_trades", 743871).tradenum (в lua)

мне кажется это не реализовано.

Реализовано здесь

Вот данные не достать. Таблицы нету. Она не реализована.

Это lua:

t = getItem("all_trades", 743871).tradenum
t2 = getItem("all_trades", 743871).price

как будет с С++ и вашей либой?

  auto it = q.getItem<qlua::alltrade>("all_trades", 0);
  q.message("Price " + std::to_string(it.price));

Этот вопрос не касается библиотеки, а обучение пользователей языку С++ не входило в мои намерения.

2 дня, а о вас этой строки добивался! Все работает! Как вычистили <ТИП_ДАННЫХ> это был qlua::alltrade?

Не понял вопрос про "вычистили".

вычислить

Чтобы я вам с этими вопросами не приставал.

getItem должен знать, какой тип данных от него требуют. Программист, вызывая getItem должен знать, что он хочет от него получить. Чтобы узнать, какие типы может возвращать getItem, можно посмотреть руководство QLUA от Arqa (названия обычно совпадают с их названиями) или смотреть директорию structs от библиотеки, где находятся файлы структур, как я указал выше.
Если я понял вопрос.

И кстати почему библиотека написана C++ 11, он же тормозной? Если C++ лучше C то будет 2 раза быстрей, а здесь это надо.