Невозможно инициализировать переменную типа 'char *' с rvalue типа 'const char *' - PullRequest
0 голосов
/ 07 мая 2020

Получение ошибки Невозможно инициализировать переменную типа 'char *' с rvalue типа 'const char *'

В этой строке кода

char* pos = strrchr (szPathName, '/');

Полный код метод для этого здесь;

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSString * path = [[NSBundle mainBundle] pathForResource:  @"fd" ofType: @"dat"];
    NSData* image = [NSData dataWithContentsOfFile:path];

    const char* szPathName = [path UTF8String];
    char* pos = strrchr (szPathName, '/');
    *pos = 0;
    if (CreateFaceFatted(szPathName) == 0)
    {
        NSLog(@"Init Dictionary failed");
    }
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

1 Ответ

0 голосов
/ 08 мая 2020

Ошибка возникает из-за того, что в C ++, но не в C, strrchr перегружен, чтобы вернуть const char *, если его аргумент - const char *. См. Почему strrchr () возвращает char* вместо const char*? для обсуждения этого.

Решение состоит в том, чтобы следовать шаблону в предыдущей строке, присвоить const char * значений к переменным одного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...