大家好,我需要帮助将Java中的一些代码转换为C++。我如何将类实例化为从Java到C++的私有类型?这是我的意思,我是一些代码行:其他类实例化的类:Java到C++的转换
第一个问题:解决。
第二个问题:这个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;
}
感谢您的支持。我将研究这部分。我在这个程序中遇到了另一个问题,不幸的是:( – Xelza