Строки в заголовочных файлах C - PullRequest
1 голос
/ 12 ноября 2010

Мой заголовочный файл выглядит следующим образом:

#include <iostream>
#include <string>
#include <windows.h>
#include <math.h>

//using namespace std;

std::string StringMultiply(string Str, int Mult)
{
    std::string Return;

    for (int Index = 0; Index <= Mult; Index++)
    {
        Return += Str;
    }

    return Return;
}

Компиляция приводит к множеству ошибок, большинство из которых связано с отсутствием string типа данных. Раскомментирование строки using namespace std; исправляет это, но мне сказали, что это плохая практика в заголовочных файлах.

Ответы [ 3 ]

8 голосов
/ 12 ноября 2010

изменить

std::string StringMultiply(string Str, int Mult)

на

std::string StringMultiply(std::string Str, int Mult)
2 голосов
/ 12 ноября 2010

Если вы замените string Str на std::string Str в списке параметров, все будет хорошо скомпилировано. В чем конкретно проблема?

2 голосов
/ 12 ноября 2010

Вам нужно квалифицировать string как std::string каждый раз, когда вы используете его, если вы закомментируете строку using.Возвращаемое значение для StringMultiply является правильным, но параметр не является.

Лично я не понимаю совет против using namespace std; - я не люблю печатать больше, чем должен.

...