Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Подключение string.h


Автор: XanderEVG 25.4.2011, 22:18
Здравствуйте. Недавно пересел на Debian 6.0 и g++. попробовал компилировать приложение из нескольких файлов - возникла проблема - не видит string в файле complex.h.

прога из 3х простых файлов: main.cpp  complex.h  complex.cpp.

complex.h: 
Код

#ifndef COMPLEX_H_
#define COMPLEX_H_

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


class Complex 
{
            
     public:
    
        Complex(){};
        Complex(int TheReal, int TheImage);
        ~Complex(){}; 

        int real;    
        int image;

        string str;


    void print();

};
 
#endif /*COMPLEX_H_*/



complex.cpp
Код

#include <iostream>
#include "complex.h"

using namespace std;


Complex::Complex(int TheReal, int TheImage)
{
    real=TheReal;
    image=TheImage;

}



void Complex::print()
{

    cout<<real<<" + i"<<image<<"\n";

}






main.cpp
Код

#include <iostream>
#include "complex.h"


using namespace std;




int main()
{
    Complex q(5,2);
    q.print();

    cout<<"it work\n";

return(0);
}



. ругаеться вот так:

g++ main.cpp complex.cpp -o prog

In file included from main.cpp:2:
complex.h:19: error: ‘string’ does not name a type
In file included from complex.cpp:2:
complex.h:19: error: ‘string’ does not name a type

Причем если перенести string str из complex.h в main.cpp или complex.cpp то ее видно даже не подключая <string.h>.
когда код 3 файлов пихаю в одну кучу, то тоже все работает без проблем.

Вероятно я не понимаю что то из основ, помогите разобраться пожалуйста!


Автор: kemiisto 25.4.2011, 22:27
using namespace std; добавить в complex.h

или std::string вместо string

Linux тут невиновен. smile

Добавлено через 10 минут и 35 секунд
И да, правильно так
Код

#include <string>

.h тут не нужен.

Автор: Cheloveck 25.4.2011, 22:54
string.h или cstring - это сишный хедер, в котором содержатся такие объявления, как strlen, strcmp, strcat итд. Класс string объявлен в заголовочном файле string и находится, как уже сказали, в пространстве имён std.

Автор: XanderEVG 26.4.2011, 08:41
О спасибо великие и могучие с++ Гуру!!! 

string действительно в пространстве имен std.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)