я должен написать функцию (C++), определение которых является:Как написать функцию, возвращающую const char *, которая является модифицированным аргументом const char *?
const char* getFileName(const char* name);
сделать вещи Короче говоря, эта функция будет принимать имя, проверить некоторые условия и добавить к нему суффикса, что делает его правильное имя файла. Например:
имя = "" некий-файл, вернитесь = "hd.png-некий-файл"
const char*
возвращаемый этой функцией будет немедленно передается в другую, которая принимает const char*
в качестве аргумента
something->loadFile(getFileName("someFile"));
у меня есть проблема, что когда я создаю в моей функции в const char*
она будет иметь ограниченную область действия функции она была создана в. с другой стороны, я не могу изменить код loadFile
, потому что это сторонняя библиотека, которую я использую.
Я могу написать обертку вокруг loadFile
, чтобы удалить const char*
, который я создал, но я не хотел бы этого делать, поскольку это упражнение по переносу, и это сломало бы некоторые шаблоны, которые я создал, чтобы сделать это проще.
Есть ли способ написать эту функцию, как я описал?
Благодаря
EDIT: небольшого объяснения:
getFileName
функции Я пытаюсь написать, что я могу изменить тип возвращаемого, но он должен соответствовать в качестве параметра loadFile
функции. Моя основная проблема заключается в том, что const char*
, возвращенный getFileName
, либо потерян, потому что это вне области видимости, либо я должен удалить его явно, что нарушает мой шаблон переноса. Я хотел бы сгенерировать имя файла в одном вызове функции и ничего не делать об этом [другими словами, в исходном коде у меня есть loadFile("something.png")
, и я хочу изменить его на loadFile(getFileName("something"))
без добавления каких-либо новых строк.
Имеет ли 'getFileName()' потокобезопасность/реентерабельность? Если это не так, вы можете вернуть указатель на «статический» буфер, локальный для этой функции. –
Да, я работаю с pthreads и предпочел бы иметь потокобезопасность, просто чтобы быть уверенным. – Krystian
Можете ли вы изменить возвращаемый тип 'getFileName()'? – hmjd