& ldquo; Сломанная цепочка инструментов: не может связать простую программу на C в buildozer? & rdquo; при попытке сделать приложение для Android с Kivy buildozer

Проблема заключается в том, что «const» является неграмотным классификатором. То, что обычно подразумевается под «const string ref», это «не изменять эту строку», а не «не изменять счетчик ссылок». В C ++ просто нет способа сказать , что члены являются «const». Они либо все, либо ни один из них.

Чтобы взломать эту проблему языка, STL может разрешить «C ()» в вашем примере, чтобы в любом случае сделать семантическую копию перемещения , и покорно игнорируют «const» в отношении счетчика ссылок (изменяемый). Пока это было четко указано, все будет хорошо.

Поскольку STL этого не делает, у меня есть версия строки, которая const_casts & lt;> удаляет ссылочный счетчик (без возможности ретроактивно сделать что-то изменчивое в иерархии классов), и - lo and behold - вы можете свободно передавать cmstring в качестве ссылок на const и делать копии их в глубоких функциях в течение всего дня без каких-либо утечек или проблем.

Поскольку C ++ не предлагает «гранулярность производного класса» здесь, написав хорошую спецификацию и создание блестящего нового объекта const constable (cmstring) - лучшее решение, которое я видел.

2
задан Ualikhan 18 January 2019 в 03:59
поделиться