C ++: объявление класса с функциями, которые обрабатывают строку - PullRequest
1 голос
/ 22 июля 2010

Я не нашел ответа на свой вопрос с помощью поиска, хотя думал, что он простой и популярный.В любом случае, мой вопрос: у меня есть заголовочный файл, который объявляет класс и функции в нем.Это выглядит так:

#ifndef SOME_CLASS_H
#define SOME_CLASS_H

#include <string>

class mySomeClass
{
    public:

    bool a_func(string & myString, unsigned long int & x);
    void b_func(string & myString, unsigned long int & x);
    void c_func(string & myString, unsigned long int & x);

    void another_func(string & myString, string & myString2);

    }

#endif // SOME_CLASS_H

Я думаю, что определения функций сейчас не имеют значения.

При компиляции компилятор сообщает, что 'string' не была объявлена ​​хотя я добавил #include <string>.Как я могу решить эту проблему, за исключением переписывания функций для использования char* вместо.Заранее спасибо.

Готово.Спасибо всем.

Ответы [ 5 ]

10 голосов
/ 22 июля 2010

Проблема: класс string находится в пространстве имен std.

Решения:

  1. Лучшее решение: просто используйте std::string вместо string в объявлениях вашей функции.
  2. Другое, менее оптимальное решение: добавьте using namespace std; после директива include (для объяснения недостатков / опасностей using см. ссылку в комментарии sbi).
8 голосов
/ 22 июля 2010

string объявлено в пространстве имен std, поэтому вы должны изменить объявления функций на

bool a_func(std::string & myString, unsigned long int & x);
3 голосов
/ 22 июля 2010

Тип, определенный в , называется std :: string, а не просто string.

#ifndef SOME_CLASS_H 
#define SOME_CLASS_H 

#include <string> 

class mySomeClass 
{ 
    public: 

    bool a_func(std::string & myString, unsigned long int & x); 
    void b_func(std::string & myString, unsigned long int & x); 
    void c_func(std::string & myString, unsigned long int & x); 

    void another_func(std::string & myString, std::string & myString2); 

    } 

#endif // SOME_CLASS_H
3 голосов
/ 22 июля 2010

Тип string, который вы хотите использовать, объявлен в пространстве имен с именем std.

Использование std::string

0 голосов
/ 22 июля 2010

положить

using namespace std

под

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