あなたはとにかく独自の値を設定するつもりならない点上書きするメモリが二回ありませんように、CおよびC++は、JavaやC#とは異なり、自動的にパフォーマンス上の理由から、メモリまたはオブジェクトのメンバーをゼロ初期化しません。欠点は、初期化されていないデータを最初に使用しないように注意する必要があることです。あなたの問題を解決するために
、あなたは、コンストラクタでメンバを設定するか、または初期化リストに:
Trie() {
this->color = 0;
this->root = nullptr;
}
または:あなたのcolor
値については
Trie() :
color (0),
root (nullptr)
{
}
、使用することを検討してくださいint
が32ビット整数(0-255のRGB値を格納する必要があると仮定して)が保証されていないので、代わりにタプルを使用します。
struct RgbColor {
uint8_t r;
uint8_t g;
uint8_t b;
RgbColor() :
RgbColor(0, 0, 0) {
}
RgbColor(uint8_t r, uint8_t g, uint8_t b) :
r(r),
g(g),
b(b) {
}
RgbColor(uint32_t rgb) :
r((rgb >> 24) & 0xFF),
g((rgb >> 16) & 0xFF),
b((rgb >> 8) & 0xFF) {
}
}
出典
2017-03-08 01:26:28
Dai
これは 'nullptr'に設定されていないためです。 – Arash
'test.root == nullptr'を書いたときに何が起こると思いますか?' test.root'を初期化したことはありませんか? –
コンストラクタはルートを初期化しないので、何でも構いません。 – user31264