2016-04-03 3 views
1

Bir C++ üstbilgi dosyası üzerinde çalışıyorum ve "Bilinmeyen tür adı 'dizesi” hatası alıyorum, "std :: string" mi demek istediniz? " #include <string> zaten kodumun en üstünde, bu yüzden bu sorunu nasıl giderebileceğimi bilmiyorum. Düşüncesi olan var mı? Xcode kullanıyorum, eğer bu bir fark yaratırsa.C++ Bilinmeyen tür adı 'string'

#ifndef POINT_HPP 
#define POINT_HPP 
#include <string> 
using namespace std; 

class Point { 
public: 
    Point(); 
    Point(int pInitX, int pInitY); 
    Point(int pInitX, int pInitY, int pInitColor); 
    double distance(Point pAnotherPoint); 
    int getColor(); 
    int getX(); 
    int getY(); 
    void move(int pNewX, int pNewY); 
    void setColor(int pNewColor); 
    void setX(int pNewX); 
    void setY(int pNewY); 
    string toString; // Error: Unknown type name 'string'; did you mean 'std::string'? 
private: 
    void init(int pInitX, int pInitY, int pInitColor); 
    int mColor; 
    int mX; 
    int mY; 
}; 

#endif 
+1

using namespace std; bildirmelidir. Daha da iyisi, [asla "ad alanı std'yi her yerde kullan" (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice). C++ 'da "ad alanı kullan" un olduğunu unutmayın. Tamamen aklını çıkar. Sınıflara, yani "std :: string" e başvururken daima tam ad alanı yeterliliği kullanın. –

+0

İlgisiz, ancak genel üye değişkenleri genellikle kötü bir fikirdir. Bu durumda 'toString' yerine bir yöntem yapacağım. – MrEricSir

+0

Sam, tavsiyelerinizi başkalarından da duydum ve mantıklı. Ne yazık ki, bu bir sınıf ödevidir ve "using namespace std;" eğitmenimizin talimatlarına göre. –

cevap

1

Eğer std::string toString() kullanın veya bir başlık dosyasında "kullanımı namespace std" koymak asla küresel