1

二分木であるクラスの作成に取り組んでいます。データを配列に格納するクラスを作成することでこれを簡素化し、戻って魔法を実現したいと思います。

ただし、コードの次のセクションのコメント アウトされた行により、Visual Studio は大量のエラーを吐き出します。それは私には理にかなっていますが、何らかの理由でコンパイルされません。私は C++ の専門家ではありませんが、Google でいろいろ試した結果、何もうまくいきません。


template 
class bin_tree
{
private:
    int *data;

public:
    int getData(int x)
    {
        return 1;
    };
    bin_tree() : data(new int[4])
    {
        //data = {1, 2, 3, 4};
    };
};
4

2 に答える 2

1

C++ へようこそ。std::array固定サイズの配列に使用:

#include <array>

class bin_tree {
private:
    std::array<int, 4>data;
public:    
    bin_tree() : data({1, 2, 3, 4}) {
    }
    ...
};

動的なサイズ変更が必要な場合は、std::vector代わりに使用してください。

于 2012-11-10T01:03:20.347 に答える
1

配列のサイズが固定されている場合 (コードからは、そうであるように思われます)、動的割り当て (つまり、「新規」) を行う必要はありません。

http://coliru.stacked-crooked.com/a/97e112739e8a45de

class bin_tree
{
private:
    int data[4];

public:
    int getData(int)
    {
        return 1;
    };
    bin_tree()
        : data{1, 2, 3, 4} // C++11
    {
        // or:
        data[0] = 11;
        data[1] = 22;
        // ...
    };
};

#include <iostream>
int main()
{
    bin_tree tr;
    std::cout << "OK";
}
于 2012-11-10T00:55:55.300 に答える