类到另一个类的实例化:Java到C++;转化 每个人,我需要帮助把java中的一些代码转换成C++。我如何将类从java到C++的实例化为私有类型?这就是我的意思,我有几行代码:
第一个问题:解决了 第二个问题:这个java代码是我想要转换的,你认为我的代码有什么错误 Java的原始代码:类到另一个类的实例化:Java到C++;转化 每个人,我需要帮助把java中的一些代码转换成C++。我如何将类从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",
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;
}
public class ClueReasoner
{
私人雇员;
私人娱乐中心;
私人国际货币基金组织;
私人卫星解算器;
私有字符串caseFile=“cf”;
私有字符串[]播放器={“sc”、“mu”、“wh”、“gr”、“pe”、“pl”};
私有字符串[]可疑={“mu”、“pl”、“gr”、“pe”、“sc”、“wh”};
私有字符串[]武器={“kn”、“ca”、“re”、“ro”、“pi”、“wr”};
私人字符串[]房间={“ha”、“lo”、“di”、“ki”、“ba”、“co”、“bi”、“li”、“st”};
私人字符串[]卡;
公共俱乐部创办人()
{
numPlayers=players.length;
//初始化卡信息
卡片=新字符串[嫌疑犯.长度+武器.长度+房间.长度];
int i=0;
用于(字符串卡:可疑)
卡片[i++]=卡片;
用于(字符串卡:武器)
卡片[i++]=卡片;
用于(字符串卡:房间)
卡片[i++]=卡片;
numCards=i;
//初始化解算器
解算器=新解算器();
额外费用();
}
私人int getPlayerNum(字符串播放器)
{
if(player.equals(案例文件))
返乡职工;
for(int i=0;i
我的代码:
#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;
}
#包括
#包括
#包括
使用名称空间std;
void Scene_Reasoner(){
整数层;
int playerNum;
int-cardNum;
字符串filecase=“Case:”;
弦乐演奏者[]={“sc”、“mu”、“wh”、“gr”、“pe”、“pl”};
字符串疑点[]={“mu”、“pl”、“gr”、“pe”、“sc”、“wh”};
弦武器[]={“kn”、“ca”、“re”、“ro”、“pi”、“wr”};
弦乐室[]={“ha”、“lo”、“di”、“ki”、“ba”、“co”、“bi”、“li”、“st”};
串卡[0];
};
无效场景\原因\基础(){
numlayer=players.length;
//初始化卡信息
卡片=新字符串[嫌疑犯.长度+武器.长度+房间.长度];
int i=0;
用于(字符串卡:可疑)
卡片[i++]=卡片;
用于(字符串卡:武器)
卡片[i++]=卡片;
用于(字符串卡:房间)
卡片[i++]=卡片;
cardNum=i;
};
私有int getCardNum(字符串卡){
对于(int i=0;i CUT你有没有在C++中实现SATSOVER?如果是的话,有一个示例代码:
class Foo
{
private:
int numPlayers;
int playerNum;
int numCards;
SATSolver solver;
// etc
};
如果您想在另一个类中声明SATSOlver
的私有实例,可以这样做:
文件SATSolver.h
class SATSolver {
// methods, members, etc....
};
文件Foo.h
#include "SatSolver.h" // get the SATSolver declaration
class Foo
{
private: // everything that follows is private access
SATSolver solver;
public: // from here on, everything is public
// more code
private: // and now, all that follows is private again
// stuff
}
<>注意,C++访问标识符只允许在类或结构中使用,不能在函数内或类或结构之外的限定类型或值中使用它们。
<强>注在C++中,默认的<<代码>类< /C>具有私用访问(继承,但超出了这个问题的范围):
class Bar {
SATSolver solver; // private
}
<你的代码打破了我们的转换器——我们修复了它,编译的C++等价物如下:
#include <string>
class ClueReasoner
{
private:
int numPlayers;
int playerNum;
int numCards;
SATSolver *solver;
std::string caseFile;
std::string players[6];
std::string suspects[6];
std::string weapons[6];
std::string rooms[9];
//ORIGINAL LINE: private String[] cards;
//JAVA TO C++ CONVERTER WARNING: Since the array size is not known in this declaration, Java to C++ Converter has converted this array to a pointer. You will need to call 'delete[]' where appropriate:
std::string *cards;
public:
ClueReasoner()
{
InitializeInstanceFields();
numPlayers = sizeof(players) / sizeof(players[0]);
// Initialize card info
cards = new std::string[sizeof(suspects) / sizeof(suspects[0]) + sizeof(weapons) / sizeof(weapons[0]) + sizeof(rooms) / sizeof(rooms[0])];
int i = 0;
for (std::string::const_iterator card = suspects->begin(); card != suspects->end(); ++card)
cards[i++] = *card;
for (std::string::const_iterator card = weapons->begin(); card != weapons->end(); ++card)
cards[i++] = *card;
for (std::string::const_iterator card = rooms->begin(); card != rooms->end(); ++card)
cards[i++] = *card;
numCards = i;
// Initialize solver
solver = new SATSolver();
addInitialClauses();
}
private:
int getPlayerNum(const std::string &player)
{
if (player == caseFile)
return numPlayers;
for (int i = 0; i < numPlayers; i++)
if (player == players[i])
return i;
std::cout << "Illegal player: " + player << std::endl;
return -1;
}
int getCardNum(const std::string &card)
{
for (int i = 0; i < numCards; i++)
if (card == cards[i])
return i;
std::cout << "Illegal card: " + card << std::endl;
return -1;
}
int getPairNum(const std::string &player, const std::string &card)
{
return getPairNum(getPlayerNum(player), getCardNum(card));
}
int getPairNum(int playerNum, int cardNum)
{
return playerNum * numCards + cardNum + 1;
}
void InitializeInstanceFields()
{
caseFile = "cf";
std::string temp_players[6] = {"sc", "mu", "wh", "gr", "pe", "pl"};
for (int element = 0; element < sizeof(temp_players) / sizeof(temp_players[0]); element++)
players[element] = temp_players[element];
std::string temp_suspects[6] = {"mu", "pl", "gr", "pe", "sc", "wh"};
for (int element = 0; element < sizeof(temp_suspects) / sizeof(temp_suspects[0]); element++)
suspects[element] = temp_suspects[element];
std::string temp_weapons[6] = {"kn", "ca", "re", "ro", "pi", "wr"};
for (int element = 0; element < sizeof(temp_weapons) / sizeof(temp_weapons[0]); element++)
weapons[element] = temp_weapons[element];
std::string temp_rooms[9] = {"ha", "lo", "di", "ki", "ba", "co", "bi", "li", "st"};
for (int element = 0; element < sizeof(temp_rooms) / sizeof(temp_rooms[0]); element++)
rooms[element] = temp_rooms[element];
}
};
#包括
类聚集者
{
私人:
int numPlayers;
int playerNum;
国际货币基金组织;
SATSolver*解算器;
std::字符串caseFile;
标准:弦乐演奏者[6];
std::字符串可疑[6];
标准::弦武器[6];
标准:弦室[9];
//原始行:私有字符串[]卡;
/java到C++转换器警告:由于在声明中数组大小不知道,java到C++转换器已经将这个数组转换成指针。
std::字符串*卡;
公众:
ClueReasoner()
{
初始化instancefields();
numPlayers=sizeof(players)/sizeof(players[0]);
//初始化卡信息
卡片=新标准::字符串[sizeof(嫌疑犯)/sizeof(嫌疑犯[0])+sizeof(武器)/sizeof(武器[0])+sizeof(房间)/sizeof(房间[0]);
int i=0;
对于(std::string::const_迭代器卡=可疑->开始();卡!=可疑->结束();+卡)
卡片[i++]=*卡片;
对于(std::string::const_迭代器卡=武器->开始();卡!=武器->结束();+卡)
卡片[i++]=*卡片;
对于(std::string::const_iterator card=rooms->begin();card!=rooms->end();++card)
卡片[i++]=*卡片;
numCards=i;
//初始化解算器
解算器=新解算器();
额外费用();
}
私人:
int getPlayerNum(常量标准::字符串和播放器)
{
if(player==caseFile)
返乡职工;
for(int i=0;i std::cout Thank!我提出了另一个问题,在我看来,私有和公共并没有像我所希望的那样出现。我使用了正确的语法将它们设置为私有和公共,但是……我失败了。你能在这个问题上帮我更多忙吗,先生?@Xelza你能添加一些小代码片段来说明失败的原因吗?@Xelza你不能在函数中有<代码>私有< <代码> > >公共>代码>代码>保护/代码>。它只在类或结构中工作。那么,如何在C++中转换它们?@ XelZa。我认为您需要问一个关于您所遇到的特定问题的具体问题。只需说,将某些java翻译成C++是有问题的。