gpt4 book ai didi

c++ - 变量没有产生正确的数据

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:51 25 4
gpt4 key购买 nike

我的变量没有按应有的方式生成数据。不管出于什么原因,我的字符串是空的,但是当我尝试执行我的函数时,我的角色在构造时显然将参数“holland”传递给了 name 参数。尽管如此,当我调用 get_name() 时,字符串返回为空。除此之外,我有一个名为“character_count”的静态整数,它应该初始化为 0,然后在每个角色创建时递增,以将值传递给角色的唯一 ID。尽管如此,它仍然无法正常工作。

有人可以告诉我我做错了什么吗?

这是我的来源:

#include "character.h"
#include <iostream>


int Character::char_count = 0;

Character::Character()
{
this->char_id = char_count;
char_count++;
}

Character::Character(std::string char_name, Race char_race, Gender char_gender)
{
char_id = char_count;
char_count++;
name = char_name;
race = char_race;
gender = char_gender;
}

Character::~Character()
{

}

std::string Character::get_name()
{
return this->name;
}

int Character::get_id()
{
return this->char_id;
}

Race Character::get_race()
{
return this->race;
}

Gender Character::get_gender()
{
return this->gender;
}

这是我的头文件:

#include <iostream>
#ifndef CHARACTER_H
#define CHARACTER_H

enum Race {HUMAN, DARK_ELF};
enum Gender {MALE, FEMALE};
class Character
{
public:
Character();
Character(std::string& char_name, Race& char_race, Gender& char_gender);
~Character();

int get_id();
std::string get_name();
Race get_race();
Gender get_gender();

private:
int char_id;
static int char_count;
std::string name;
Race race;
Gender gender;
};

#endif // CHARACTER_H

这是我的主要内容:

#include <QtCore/QCoreApplication>
#include <tinyxml/tinyxml.h>
#include "classowner.h"
#include "character.h"

int main(int argc, char *argv[])
{
std::string holland_name = "holland";

Character * holland = new Character(holland_name, HUMAN, MALE);
delete holland;
std::cout << "testing, mic...1, 2, 3...testing, testing. Bow, chica wow wowww!!1" << std::endl;
std::cout << holland->get_id() << std::endl; //outputs as an 8 digit letter, when it should be either 0, or 1.
std::cout << holland->get_name() << std::endl; //does not output at all.

return 0;
}

最佳答案

那是因为你在完成内存之前删除了它。试试这个吧

Character * holland = new Character(holland_name, HUMAN, MALE);
std::cout << "testing, mic...1, 2, 3...testing, testing. Bow, chica wow wowww!!1" << std::endl;
std::cout << holland->get_id() << std::endl;
std::cout << holland->get_name() << std::endl;
delete holland;

仅在完成相关对象后才删除。这种错误会调用未定义的行为,这意味着所有的赌注都没有了,当你运行你的代码时,任何事情都可能发生。在某些方面,你很幸运,有一个明显的错误。您的程序可能看起来运行成功,而您永远不会知道存在问题。

关于c++ - 变量没有产生正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com