2013-09-07 2 views
-1
#ifndef vid 
#define vid 
#include<cstring> 
#include<string> 
#include<string.h> 


class Video 
{ 
protected: 
string title; 
int id; 
string genre; 
string type; 
string actor; 
bool available; 


public : 
virtual double rent(); 
virtual void displayDetails(); 

}; 


#endif 

Я получаю эту ошибку при объявлении всех строковых атрибутов.Я получаю ошибку: C2501 при объявлении строк

error C2501: 'string' : missing storage-class or type specifiers Please help

+0

Почему вы включаете в себя все возможные заголовки строк? Единственный, который вам нужен в этом случае, это 'string' – Praetorian

+0

@Praetorian: он, вероятно, экспериментировал, чтобы правильно распознать строку и оставил ее там до публикации. Я бы не стал суетиться. – lpapp

+1

@LaszloPapp Umm, 'string.h' и' cstring' наследуются от стандартной библиотеки C и никогда не будут исправлять никаких проблем с 'std :: string'. И как указывается что-то сомнительное для начинающего * суетливого *? Если кто-то суетливый, вы скуляете по поводу * достоинств *, говорящих о добавлении 'using namespace std;' * в заголовок * к новичку. – Praetorian

ответ

3

string определяется по std пространства имен, вы можете исправить код, обеспечивая полное пространство имен:

std::string genre; 
std::string type; 
std::string actor; 
+0

Я думаю, что это плохое предложение без предоставления альтернатив с про/минусами. Если нет конфликта пространства имен, я не думаю, что кто-то хотел бы это напечатать. – lpapp

0

string входит в пространство имен std.

Так как квалифицировать идентификатор непосредственно как:

std::string 

Или используйте using директиву (которая не должна быть предпочтительным для такого ограниченного использования)

using namespace std; 
string str; 

Или используйте using декларацию

using std::string; 
string str; 
+0

Я не думаю, что второй вариант - хорошая идея. Новичкам не следует поощрять их использовать. Имейте в виду, что это файл заголовка. – juanchopanza

+0

@juanchopanza, если вы правильно читаете, я уже написал это. Разве это сокращение? – Saksham

+0

Да, этот файл является заголовком, поэтому даже упоминание 'using namespace std' - плохая идея. OP может решить пойти с этим и нарушить их или чужой код. – juanchopanza

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