私は独占ゲームをプログラミングしています。そして、私は本当に素敵なクリーンな出力を作るためのソート機能が大好きです。この例では、プレイヤーがグループで所有しているプロパティをソートしています。すべてのコンパイルエラーC2280、削除された関数演算子を参照しようとしました=
まず、ここでプレイヤーは、これらのプロパティのリストを所有している、今、私の財産ソーター機能
bool propertySort(Property a, Property b) { return a.getGroup() < b.getGroup(); }
です。
#pragma once
#include <string>
#include <vector>
#include "Dice.h"
#include "Property.h"
class Player
{
public:
...
private:
int curMoney{ 1500 };
int curLocation{ 0 };
int playerNum{ 0 };
std::string name;
std::vector<Property> ownedProperties{};
int curDiceRoll;
};
ご覧のとおり、0属性に初期化されたプライベート属性です。
メインの私のプロパティソーターでは、プレーヤーが見るためにボード上にプロパティを表示するので、ソーター機能は常にエラーC2280を与え続けます。私はソートラインをコメントアウトするとプログラムがうまく動作するので、このエラーが発生するのはこのソート関数であることはわかっています。私は初心者のプログラマーなので、私が無知なことは明らかです。もし誰かがそれが何であるかについての洞察力を提供することができたら、それはすばらしいでしょう、ありがとう!場合
void viewProperties(Player& p)
{
string prompt = "Select a player to view their properties";
vector<string> playerNames{};
for (Player p : players)
{
playerNames.push_back(p.getName());
}
Menu propertiesMenuSelection{ prompt, playerNames };
vector<Property> propertiesOfSelectedPlayer = players[propertiesMenuSelection.getChoice()].getOwnedProperties();
sort(propertiesOfSelectedPlayer.begin(), propertiesOfSelectedPlayer.end(), propertySort);
system("CLS");
これは、ここではPropertyクラスは、ここで
#pragma once
#include "Space.h"
#include <array>
#include <vector>
extern std::vector<Player> players;
class Property : public Space
{
public:
Property(std::string name, std::vector<int> values);
~Property();
void run(Player&) override;
std::vector<std::string> boardOut() const override;
std::string getName() const override;
...
private:
std::string name;
int group;
int price;
int buildingCost;
int buildings;
Player* ownerPtr = nullptr;
std::array <int, 6> rent;
const std::array <std::string, 10> groups{ "Brown", "Light Blue", "Pink", "Orange", "Red", "Yellow", "Green", "Dark Blue", "Railroad", "Utility" };
};
だのに役立ちます非常に単純な要求に応じて空間クラスです。
#pragma once
#include <string>
#include <vector>
class Player;
class Space
{
public:
virtual void run(Player&) = 0;
virtual std::string getName() const = 0;
virtual std::vector<std::string> boardOut() const = 0;
};
一部が割り当て可能ではありません。あなたのポストに 'スペース'を含めることができますか? –
'私にエラーC2280'を与える - これは実行時エラーではなくコンパイラエラーであるため、問題のタイトルが示唆しているようにエラーは「スローされません」。 – PaulMcKenzie
'const std :: array' - このメンバ変数は、コピーが利用できない理由かもしれません。 – PaulMcKenzie