memcpy
.addM
. new Moved[++mSize]
делает однозначную вещь - массив инстанций. В этом коде нет работы с полиморфизмом. new char[1]
делает выделение всего в один символ. Если ты хочешь хранить там строку, то в такой буфер записать получится лишь пустую строку. Имеющегося пространства в этом буфере хватит только на терминальный символ и все.Там у Виндовз полная фигня
MAX_PATH
определяется значением 260
. Это - максимальная длина строки, принимаемой API функциями в качестве ASCII-представления пути. Ограничения в 255 символов в природе нет. А если учитывать эффект от SetCurrentDirectoryA, то лимитов на длину ASCII-представления пути тоже нет. 260 символов - это лимит промежуточного буфера, в который будет скопировано ASCII-представление твоего пути перед дальнейшей работой с ним.A
, другие принимают UCS2-строки и именуются суффиксом W
. Твой UTF-8 сперва надо перевести в UCS2/UTF-16 и только потом передавать в W
-функцию.SetCurrentDirectoryW
уже спокойно сможет перевести текущую рабочую директорию процесса в папку, в пути которой присутствуют этнические символы. ASCII-вариант тоже может, но только при правильном приведении кодировки строк представления путей. Это та еще задачка по сложности.ExW
-функциями (при наличии вариантов с данными суффиксами). Строки, особенно путей, в WinAPI передает только в UCS2/UTF-16, а пути всегда приводит к UNC-нотации. (*++argv) [0]
- сместить указатель на следующую ячейку, провести разыменование этой ячейки, взять первый элемент по адресу в этой ячейке.argv
имеет тип const char* const argv[]
. В ячейках argv
лежат элементы типа const char* const
, для которых тоже характерны операторы разыменования и произвольного доступа. ""
. Лично я не вижу проблемы его вывести.std::cout << 'Hello, world'
'Hello, world'
вообще не является ни строковым, ни символьным литералом. Это - значение с типом int
. C2659
говорит о том, что ты пытаешься использовать имя функции как имя переменной. Это, в целом, абсолютно недопустимо.exit
, но объявлена она в пространстве std
, которое ты мог не подумавши раскрыть в глобальное пространство.exit
. Ты вполне мог воспользоваться заголовком, где она описана.::exit
является полной квалификацией имени с расположением в глобальном пространстве. Имя функции с большим приоритетом будет выбрано из глобального пространства.