皆さん、Java のコードを C++ に変換するのに助けが必要です。Java から C++ へのプライベート型としてクラスをインスタンス化するにはどうすればよいですか? これが私が言いたいことです、私はいくつかのコード行です:
最初の問題: 解決しました。
2 番目の問題: この Java コードは私が変換したかったものです。コードのどこが間違っていると思いますか?
Java の元のコード:
public class ClueReasoner
{
private int numPlayers;
private int playerNum;
private int numCards;
private SATSolver solver;
private String caseFile = "cf";
private String[] players = {"sc", "mu", "wh", "gr", "pe", "pl"};
private String[] suspects = {"mu", "pl", "gr", "pe", "sc", "wh"};
private String[] weapons = {"kn", "ca", "re", "ro", "pi", "wr"};
private String[] rooms = {"ha", "lo", "di", "ki", "ba", "co", "bi", "li", "st"};
private String[] cards;
public ClueReasoner()
{
numPlayers = players.length;
// Initialize card info
cards = new String[suspects.length + weapons.length + rooms.length];
int i = 0;
for (String card : suspects)
cards[i++] = card;
for (String card : weapons)
cards[i++] = card;
for (String card : rooms)
cards[i++] = card;
numCards = i;
// Initialize solver
solver = new SATSolver();
addInitialClauses();
}
private int getPlayerNum(String player)
{
if (player.equals(caseFile))
return numPlayers;
for (int i = 0; i < numPlayers; i++)
if (player.equals(players[i]))
return i;
System.out.println("Illegal player: " + player);
return -1;
}
private int getCardNum(String card)
{
for (int i = 0; i < numCards; i++)
if (card.equals(cards[i]))
return i;
System.out.println("Illegal card: " + card);
return -1;
}
private int getPairNum(String player, String card)
{
return getPairNum(getPlayerNum(player), getCardNum(card));
}
private int getPairNum(int playerNum, int cardNum)
{
return playerNum * numCards + cardNum + 1;
}
私のコード:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
void Scene_Reasoner() {
int numPlayer;
int playerNum;
int cardNum;
string filecase = "Case: ";
string players [] = {"sc", "mu", "wh", "gr", "pe", "pl"};
string suspects [] = {"mu", "pl", "gr", "pe", "sc", "wh"};
string weapons [] = {"kn", "ca", "re", "ro", "pi", "wr"};
string rooms[] = {"ha", "lo", "di", "ki", "ba", "co", "bi", "li", "st"};
string cards [0];
};
void Scene_Reason_Base () {
numPlayer = players.length;
// Initialize card info
cards = new String[suspects.length + weapons.length + rooms.length];
int i = 0;
for (String card : suspects)
cards[i++] = card;
for (String card : weapons)
cards[i++] = card;
for (String card : rooms)
cards[i++] = card;
cardNum = i;
};
private int getCardNum (string card) {
for (int i = 0; i < numCards; i++)
if (card.equals(cards[i]))
return i;
cout << "Illegal card: " + card <<endl;
return -1;
};
private int getPairNum(String player, String card)
{
return getPairNum(getPlayerNum(player), getCardNum(card));
};
private int getPairNum(int playerNum, int cardNum)
{
return playerNum * numCards + cardNum + 1;
};
int main () {
return 0;
}