В C++ у Вас Может Быть Указатель на Функцию, у Вас может также быть указатель на класс?

Кажется, вы хотите сопоставить mCi=268435455, одно совпадение во входной строке.

Основная проблема заключается в том, что вы используете литеральную запись regex внутри строкового литерала. Разделители и флаги регулярных выражений анализируются как часть шаблона регулярных выражений, и, следовательно, у вас нет совпадений. В первом фрагменте вы даже не используете myRegex.

Используйте

val regex = """mCi=[0-9]*""".toRegex()
val s = "CellInfoLte:{mRegistered=NO mTimeStampType=unknown mTimeStamp=0ns CellIdentityLte:{ mMcc=219 mMnc=1 mCi=268435455 mPci=453 mTac=65535 mEarfcn=1501} CellSignalStrengthLte: ss=37 rsrp=-104 rsrq=-15 rssnr=2147483647 cqi=2147483647 ta=2147483647}"
var res = regex.find(s)?.value
println(res) // => mCi=268435455

См. Kotlin demo .

Если вы планируете получить только цифру части mCi, вы можете использовать

val regex = """(?<=mCi=)[0-9]*""".toRegex()

(?<=mCi=) положительный взгляд сзади потребует наличия mCi= непосредственно перед 0 или более цифрами , но будет исключен из сопоставленного текста. См. это демо Kotlin .

7
задан Alex Gaynor 13 November 2008 в 00:06
поделиться

9 ответов

В C++ классы не являются "объектами первого класса". Самым близким, который можно получить, является указатель на type_info экземпляр.

17
ответ дан 6 December 2019 в 06:04
поделиться

Как все остальные уже сказали, не возможно иметь указатель на класс.

Но если точка должна создать новый экземпляр из некоторого класса, выбранного во времени выполнения, Вы могли бы хотеть проверить Метод фабрики (или Абстрактная Фабрика) шаблоны разработки.

4
ответ дан 6 December 2019 в 06:04
поделиться

Нет. Указатель является адресом чего-то в памяти компьютера во времени выполнения. Класс является просто рядом инструкций к компилятору.

5
ответ дан 6 December 2019 в 06:04
поделиться

Да и номер это зависит от Вашего контекста того, чего Вы пытаетесь достигнуть. Если Вы просто хотите указатель на тип затем не нет пути. Тип не живет в памяти в смысле указателя.

Там обоснуйте, что я сказал да, хотя некоторые люди, считал бы виртуальную таблицу указателем на тип. Возможно получить этот указатель, так как виртуальная таблица действительно существует в памяти и может использоваться для вызова виртуальных методов с небольшим количеством обмана.

1
ответ дан 6 December 2019 в 06:04
поделиться

В отличие от истинных Основанных на объектах языков, класс не является объектом в C++, больше - жалость. Самым близким можно приехать в "указатель на класс", является RTTI:

станд. константы:: type_info &info = идентификатор типа (возражают выражению);

type_info имеет имя () участник finction, и они могут сравниться друг с другом.

1
ответ дан 6 December 2019 в 06:04
поделиться

"Класс" не существует. Единственной вещью, на которую можно указать, являются данные.

Остальная часть "Класса" является на самом деле таблицей отправки. Для каждого метода в классе таблица отправки имеет указатель. Тем путем класс указывает на корректный метод Вашего класса независимо от того, к какому типу он в настоящее время бросается. Это было бы бесполезно к доступу.

Методы в Вашем классе (вещи, на которые указывает таблица отправки), являются на самом деле просто "Функциями", которые передаются в Вашем указателе данных класса. Определение метода в значительной степени, что это - функция, которая берет данные классов в качестве параметра. На большинстве языков C-стиля тот указатель данных скрыт, но называем "этим".

Методы для Вашего класса могут быть распространены на всем протяжении кодовой базы. Из-за родительских классов Вы маловероятны, даже находят эти методы смежными друг с другом.

1
ответ дан 6 December 2019 в 06:04
поделиться

У Вас не может быть указателя (во время выполнения) на класс, но C++ делает имеет подобное понятие времени компиляции: шаблонные параметры. Повышению выделили библиотеку управлению ими и библиотекой черт для того, чтобы получить информацию о классах.

1
ответ дан 6 December 2019 в 06:04
поделиться

В зависимости от того, как Вы хотите думать об указателях, у Вас может быть "указатель" на класс, если указателем Вы имеете в виду некоторое интегральное значение. Повышение позволяет Вам регистрировать типы и присваивать уникальное целое число для каждого типа, который Вы регистрируете. Если типы, которые Вы регистрируете, являются всеми классами затем, можно искать во времени выполнения код, необходимый для создания объекта типа, который Вы хотите, пока у Вас есть значение типа, который Вы хотите. Но в целом, классы не являются объектами первого класса на языке и лучшем, на которое можно надеяться, должен моделировать поведение, которое Вы хотите иметь.

0
ответ дан 6 December 2019 в 06:04
поделиться

Правда, нет никакой поддержки отражения/самоанализа во встроенном к C++, но существует много библиотек, которые добавят многие из, например, функциональность Класса Java, и позволять программисту получать объект, представляющий класс, создавать экземпляр, и т.д. отражение C++ Google.

0
ответ дан 6 December 2019 в 06:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: