Я работаю над C ++ проект (и я полный c ++ n00b), который использует корневое пространство имен для доступа к ::tolower
метод в следующих строках кода, но я изменил некоторые параметры сборки и получаю сообщение об ошибке.
CCString * CCBReader::toLowerCase(CCString * pString) {
std::string copy(pString->getCString());
std::transform(copy.begin(), copy.end(), copy.begin(), ::tolower);
return CCString::create(copy.c_str());
}
Изменения в сборке необходимы для большей части проекта, и изменить их нельзя. В качестве обходного пути, я хотел бы попробовать префикс этого с корневым пространством имен. Например:
std::transform(copy.begin(), copy.end(), copy.begin(), rootns::tolower);
Это возможно? Если так, то как?
Поскольку многие из вас уже проигнорировали мое идеальное решение как невозможное и спросили, в чем заключается ошибка, чтобы увидеть, можете ли вы решить его по-своему, вот соответствующая часть ошибки:
error: '::tolower' has not been declared
Корневое пространство имен не имеет имени, поэтому нет другого способа обратиться к нему.
Вместо этого вам придется пересмотреть изменения в сборке и, возможно, подумать, что именно говорит об ошибке. Ошибка может не быть связана с пространствами имен. Это могло быть вызвано какой-то другой проблемой ранее в вашем коде.
Других решений пока нет …