無論出於何種原因,我的執行程序都無法正常工作。程序意外完成
#include <QtCore/QCoreApplication>
#include <tinyxml/tinyxml.h>
#include "classowner.h"
#include "character.h"
int main(int argc, char *argv[])
{
Character * holland = new Character("Holland", HUMAN, MALE);
delete &holland;
std::cout << "Hello, World!" << std::endl;
return 0;
}
我所有的輸出狀態是,該方案將無法正確執行。輸出不顯示,但是當我不分配對象時,它會顯示。顯然,它是對象。我究竟做錯了什麼?
更新
它出現的問題可能是一些比刪除和分配內存等等。因此,我將在Character類後面發佈實現。
部首:
#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() { return this->char_id; }
std::string get_name() { return this->name; }
Race get_race() { return this->race; }
Gender get_gender() { return this->gender; }
private:
int char_id;
static int * char_count;
std::string name;
Race race;
Gender gender;
};
#endif // CHARACTER_H
//來源:
#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)
{
this->char_id = *char_count;
char_count++;
this->name = char_name;
this->race = char_race;
this->gender = char_gender;
}
Character::~Character()
{
}
你刪除其中包含指向你真正的對象,這可能不是在堆/動態存儲器到存儲器發佈。很好,你有例外。有時,釋放錯誤的記憶可能會導致嚴重的記憶腐敗,需要大量的努力才能弄清楚! – sarat