2015-07-19 5 views
-4

Обратите внимание, что я добавил файл заголовка strutils.h, также я скопировал этот файл в проекте. strutils.cpp был добавлен в исходные файлы и также был скопирован в папку Project.Ошибка C2039 - не является членом std :: basic_string

** Ошибка я получаю следующим образом: C2039 ошибка: 'ToLower': не является членом 'станд :: basic_string < _Elem, _Traits, _Alloc>' **

Я начал код следуя книге «Гобелен по компьютерной науке» Астраханом, я несколько раз проверял книгу, но с моей стороны никакого результата. (Библиотека strutils включает функцию ToLower())

Я чувствую, что у меня что-то очень простое.

Ниже приведен мой код.

#ifndef _STRUTILS_H 
    #define _STRUTILS_H 

    #include <iostream> 
    #include <string> 
    #include "strutils.h" 
    using namespace std; 

    int main() 
    { 
     string boot = "Drimmnal"; 
     boot.ToLower(); 

     cin.ignore(); 
     cin.get(); 
     return 0; 
    } 

    #endif 
+1

Пожалуйста, изучите C++ систематически из [хорошей книги] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list), или плохость, подобная этому коде, будет преследовать вас и ваши коллеги. –

+1

Сообщение означает, что 'ToLower' не является членом' std :: string', из которых 'boot' является экземпляром. Прочтите [хорошую ссылку] (http://en.cppreference.com/w/cpp/string/basic_string). – juanchopanza

+2

@GunCode: прочитайте свою книгу снова, подпись для этой функции - 'void ToLower (строка & s);'. Это не функция 'std :: string' member, и она не принимает двух числовых параметров. – Blastfurnace

ответ

2

Функция вы пытаетесь использовать не функция член std::string класса Standard Library, так что вы не можете назвать это, говоря boot.ToLower(). Этот синтаксис зарезервирован для функций-членов.

Эта функция предоставляется в материалах поддержки для вашей книги. Он имеет подпись void ToLower(string & s);. Это бесплатная функция, которая принимает std::stringпо ссылке и, я полагаю, меняет строку на месте. Вы хотите называть его, как любую другую свободную функцию, и передать ей переменную std::string.

Изменение:

boot.ToLower(); 

To:

ToLower(boot); 

Кроме того, необходимо удалить следующие строки из исходного кода:

#ifndef _STRUTILS_H 
#define _STRUTILS_H 

и

#endif 

Эти строки включают в себя ограждения из файла strutils.h, и я не уверен, почему они находятся в вашем исходном файле.

Смежные вопросы