2015-07-28 2 views
0

Я пытаюсь создать клиент-серверную программу, которая позволила бы мне написать кому-то. Все работало правильно, когда я делал это серверным. Теперь, когда я хочу реализовать ту же самую функцию, которую я сделал для серверной части в Visual Studio, Visual Studio говорит, что я не могу, потому что он не распознает строку. Я пробовал с и без включения строки, но это не сработает.Visual Studio 2012 Ultimate не распознает тип String

Вот что код выглядеть для клиента:

#pragma once 
//#include <winSock2.h> 
//#include <Windows.h> 
#include "ClientNetwork.h" 
#include "NetworkData.h" 
#include <string> 
#include <string.h> 

class ClientGame 
{ 
public: 
    ClientGame(); 
    ~ClientGame(void); 

    ClientNetwork* network; 

    void sendActionPackets(); 

    char network_data[MAX_PACKET_SIZE]; 

    void update(); 

    void sendMessagePacket(string message); 
}; 

Visual Studio дает мне «ошибка синтаксиса:. Идентификатор„строка“ Тем не менее, я ясно включил его во всех отношениях можно там

.

Кроме того, у меня есть один и тот же код в одном проекте, но для серверной стороны моей программы Вот оно:.

#pragma once 
#include "ServerNetwork.h" 
#include "NetworkData.h" 

class ServerGame 
{ 
public: 
    ServerGame(void); 
    ~ServerGame(void); 

    void update(); 

    void receiveFromClients(); 

    void sendActionPackets(); 

    void sendMessagePacket(string message); 

private: 

    //IDs for the clients connection for table in ServerNetwork 
    static unsigned int client_id; 

    //The ServerNetwork object 
    ServerNetwork* network; 

    //data buffer 
    char network_data[MAX_PACKET_SIZE]; 
}; 

И это работает даже без го e #include string/string.h. Кто-нибудь знает, почему это так?

** EDIT Я должен был указать, я попытался объединить его в std так же, как и "std :: string". Но все же это не сработает.

** Похоже, что это «разрешено» Удаление «string.h» включает в себя, но сохранение простой «строки» и добавление области «std ::» позволило решить эту проблему. Я все еще довольно смущен, почему нет проблем в моей серверной версии. Я не должен был включать и не охватить его. Во всяком случае, я должен быть в порядке! Thnanks! :)

+4

Оставив пространство имен. Это 'std :: string'. – user4581301

+0

Вместо того, чтобы указывать 'std :: string' снова и снова, и если вы можете быть уверены, что у вас не будет прятаться какая-либо строка, вы можете немного сэкономить свои проблемы и придерживаться' using std :: string; ' вверху вверх по файлам CPP в рамках операторов include. Не ставьте его выше операторов include, потому что бог знает, что может сломаться, если какой-то заголовок уже использует строку. – user4581301

+0

Я должен был указать, я также попытался включить его в std так же: «std :: string». Но все же это не сработает :( – ECHO

ответ

1

Вы не определили пространство имен. string находится в пространстве имен std, поэтому для его использования вам необходимо либо полностью его квалифицировать (std::string), введите название с помощью директивы using (using std::string) или вы можете импортировать полное пространство имен (using namespace std;). You want to avoid the last option if at all possible.

+0

Я должен был указать, что я попытался объединить его в std таким образом «std :: string». Но все же это не сработает :( – ECHO

+1

Тогда покажите, что и в вашем вопросе. – NathanOliver

+0

Просто добавьте это :) – ECHO

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