Я определяю свой собственный variant
типа так:Ни один матча для оператора * при использовании подталкивания :: вариант
typedef variant<myobj **, ... other types> VariantData;
Один из моих методов класса получает этот тип данных в качестве параметра и пытается сделать что-то вроде:
void MyMethod(VariantData var){
//method body
if(some_cond){ // if true, then it implies that var is of type
// myobj **
do_something(*var); // however, I'm unable to dereference it
}
// ... ther unnecessary stuff
}
в результате, когда я скомпилировать свою программу, я получаю сообщение об ошибке:
error: no match for 'operator*' (operand type is 'VariantData ....'
я делаю п ot знать, как исправить эту ошибку. PS. В целом код работает хорошо - если я прокомментирую эту часть, связанную с разыменованием, тогда все пройдет гладко.
Вы не можете разыменовать 'boost :: variant'. Используйте [статический посетитель] (http://www.boost.org/doc/libs/1_58_0/doc/html/variant.html#variant.motivation) или [get()] (http: //www.boost. org/doc/libs/1_58_0/doc/html/boost/get_idp295310448.html), которая извлекает значение –
. Думаю, если вы немного поработаете над этим, вы можете сделать ответ. Я буду признателен и признаю это. – Jacobian
Документация не представляется достаточно информативной, особенно с точки зрения примеров. Что касается меня, я думаю, что функция 'get' мне подходит лучше, но я не могу понять из документации, как ее использовать. – Jacobian