- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难理解我在这里遇到的问题。这是学校类(class)的作业。我在我的笔记本电脑上编写我的代码,然后在学校的服务器上编译/测试/提交它。
我目前在 clion 中编写代码。当我在我的 Mac 终端上运行 gcc -v
或 g++ -v
时,我得到以下信息:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
在我得到的学校服务器上运行相同的命令:
gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
我在不同版本的 gcc 上编译,不确定这是否会影响我的问题。继续……
int main() {
int choice; // Used to get creature selection from user
Creature *creature1, *creature2; // Objects created
printCreatureList(); // Prints list of creatures for players to select from
choice = getIntFromUser(5); // Gets user choice for creature selection
if (choice == 1) {
Goblin newGob1;
creature1 = &newGob1;
newGob1.setStats();
cout << "Created " << creature1->getName() << " as player 1's creature.\n";
// more if-else, and repeat for player 2 ...
}
现在,玩家 1 和玩家 2 各自创建了一个准备战斗的生物。请注意供以后使用,creature1->getName()
在这里可以正常运行。这是给我带来问题的战斗循环部分。请注意,还有另一个版本,玩家 2 进攻,玩家 1 防守。
do { // Enter game loop
cout << endl << "\nTurn #" << i << ", Player 1 (" << creature1->getName() << ") attacking Player 2 (" << creature2->getName() << ")";
i++;
p1Attacks(*creature1, *creature2, *p1Achilles, *p2Achilles); // Player 1 attacks, player 2 defends
if (creature2->getStrength() <= 0) { //Check if creature2 was defeated
cout << "\n\t***Player 2's creature has taken fatal damage***" << endl;
cout << "\n\t* * * Player 1 (" << creature1->getName() << ") has won the battle * * *" << endl;
winCondition = false;
break;
// advances on to p2Attacks
} while (winCondition);
我的 p1Attack 和 p2Attack 有相似的格式:
void p1Attacks(Creature &p1, Creature &p2, bool &p1AchillesInjury, bool &p2AchillesInjury)
p1Attacks/p2Attacks 工作正常,所有数学结果都很完美。但是当我在我的学校服务器上运行战斗时,gcc 4.4.7 20120313
我看到:
第 1 回合,玩家 1 () 攻击玩家 2 ()
玩家 1 的攻击掷骰:7
玩家 2 的防御掷骰:1
玩家 1 的伤害输出:6
玩家2的护甲:3
玩家 2 受到的伤害:3
玩家 2 新实力:5
第一行不正确,它应该是第 1 回合,玩家 1(野蛮人)攻击玩家 2(爬行动物)
如果他们各自创建了相应的角色。在我的本地机器上,代码运行正确,并在括号中正确拼写出名称。
我的生物类和来自 creature.cpp 的 .setStats() 示例:
class Creature {
public:
Creature() {}
/*
Functions: changeStrength()
Description: Change strength attribute for creature by reducing value
Parameters: reduceStrengthBy
Preconditions: None
Postconditions: Strength is reduced
*/
void changeStrength(int reduceStrengthBy);
int getAttackDice() { return attackDice; }
int getAttackSides() { return attackSides; }
int getDefenseDice() { return defenseDice; }
int getDefenseSides() { return defenseSides; }
int getArmor() { return armor; }
int getStrength() { return strength; }
std::string getName() { return name; }
bool getDodge() { return dodge; }
protected:
int attackDice;
int attackSides;
int defenseDice;
int defenseSides;
int armor;
int strength;
std::string name;
bool dodge;
};
void Reptile::setStats() {
attackDice = 3;
attackSides = 6;
defenseDice = 1;
defenseSides = 6;
armor = 7;
strength = 18;
name = "The Reptile";
dodge = false;
}
所以我的最终问题是,为什么 creature1->getName()
行在早期的 if 语句
中在我的笔记本电脑和学校服务器上都能正常运行,但只能在我的本地机器上工作,稍后无法在远程服务器上工作(p1Attack 附近)?
最佳答案
如果某些东西在一台机器上工作但在另一台机器上不工作,你可以确定你已经成为未定义行为的受害者。
事实上,您正在使用悬挂指针。基本上,它归结为:
int main(int, char**) {
int * pointer; // uninitialised, don't use
if (someCondition) {
int object = 42;
pointer = &object; // assigned to point to an object, can be used
} // object goes out of scope here
// pointer is dangling, don't use
cout << *pointer << endl; // oops
return 0;
}
要解决这个问题,您需要将对象存储在不受自动内存管理影响的地方(例如在堆上),或者重新安排代码以利用它。
关于c++ - C++ 中基类和派生类的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579283/
这是我的本地域名 http://10.10.1.101/uxsurvey/profile/dashboard 在 Controller 中,我为用户列表设置了一个操作 redirect(control
要处理 Canonical URL,最佳做法是执行 301 重定向还是更好地为 www 和非 www 域使用相同的 IP 地址? 例如: 想要的规范 URL/域是 http://example.com
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
1 内网基础 内网/局域网(Local Area Network,LAN),是指在某一区域内有多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机
我想创建一个 weblogic 集群,其中有两个托管服务器,每个服务器在物理上独立的远程计算机上运行 根据weblogic文档 All Managed Servers in a cluster mus
我正在运行 grails 3.1.4,但在创建允许我将多个域对象绑定(bind)到其他几个域对象的模式时遇到了问题。作为我正在尝试做的一个例子: 我有三个类(class)。书籍、作者和阅读列表。 作者
我试图使用@count函数来根据它获取数据,但是在没有崩溃报告的情况下它以某种方式崩溃了。 这是代码 class PSMedia: Object { @objc dynamic var id
有谁知道是否有办法只输入字母字符而不输入数字?我想过这样的事情 CREATE DOMAIN countryDomain AS VARCHAR(100) CHECK( VALUE ??? );
我的代码: const checkoutUrl = 'https://example.com/checkout/*' window.onload = startup() function st
一些不是我编写的应用程序,也不是用 PHP 编写的,它为域 www.example.com 创建了一个 cookie。 我正在尝试替换该 cookie。所以在 PHP 中我做到了: setcookie
什么是 oauth 域?是否有任何免费的 oauth 服务?我可以将它用于 StackApps registration 吗? ?我在谷歌上搜索了很多,但找不到答案。 最佳答案 这是redirect_
自从 In October 2009, the Internet Corporation for Assigned Names and Numbers (ICANN) approved the cre
我使用 apache 作为我的应用程序 Web 服务器的代理,并希望即时更改与 sessionid cookie 关联的域名。 该cookie有一个与之关联的.company.com域,我想使用apa
我只想托管一个子域到cloudflare。我不想将主域名的域名服务器更改为他们的域名服务器。真的有可能吗? 最佳答案 是的,这是可能的,但是需要通过CloudFlare合作伙伴进行设置,或者您需要采用
When using socket in the UNIX domain, it is advisable to use path name for the directory directory m
想象两个共享一个域类的 Grails 应用程序。也许是 Book 域类。 一个应用程序被标识为数据的所有者,一个应用程序必须访问域数据。类似于亚马逊和亚马逊网络服务。 我想拥有的应用程序将使用普通的域
我有一个包含字段“URL”的表单。第一部分需要用户在文本框中填写。第二部分是预定义的,显示在文本框的右侧。 例如,用户在文本框中输入“test”。第二部分预定义为“.example.com”。因此,总
如果我要关闭并取消分配 azure 中的域 Controller ,从而生成新的 vm Generationid,我需要采取哪些步骤来恢复它? 最佳答案 what steps do I need to
我想尝试使用 Azure 作为托管提供商(我有一个域)。我读过那篇文章https://learn.microsoft.com/en-us/azure/app-service-web/web-sites
所以.... 我想知道是否有人可以在这方面协助我? 基本上,我已经创建了一个自托管的Docker容器,用作构建代理(Azure DevOps) 现在,我已经开始测试代理,并且由于我们的放置文件夹位于W
我是一名优秀的程序员,十分优秀!