私が開発しているゲーム用のサーバーを作りようとしています。 問題は、誰かが切断すると、サーバーを作成できる方法のために、最後に接続した人が切断されるということでした。listener.acceptは、unique_ptrをsf :: TcpSocketに渡すとエラーを返します
私はsfmlフォーラムでこれを解決する方法を尋ね、std::vector<sf::TcpSocket> clients
の代わりにstd::vector<std::unique_ptr<sf::TcpSocket>> clients
を使用する代わりに応答を受けました。
この変更に合わせて、すべてのすべてを変更した後、私はこのコードの問題に遭遇した:
while (listener.accept(clients[numClients + 1].get()) == sf::Socket::Done)
は、私の知る限り、これは動作するはずですが、私は何とかのF * CKに管理することアップと、このエラーが発生します。ここでは
initial value of reference to non-const must be an ivalue
はちょうど問題のコードとスニペットです:
#include <iostream>
#include <vector>
#include <memory>
#include <SFML\Network.hpp>
int main()
{
const int maxClients = 100;
int numClients = 0;
std::vector<std::unique_ptr<sf::TcpSocket>> clients(maxClients);
sf::TcpListener listener;
while (listener.accept(clients[numClients + 1].get()) == sf::Socket::Done)
{
numClients++;
std::cout << "new guy connected" << std::endl;
}
return 0;
}
私はsfmlとC++の経験が1年しかないので、私のような人が理解できる回答を書いてください:)