1

我正在创建一个二叉树类。我想通过创建一个将数据存储在数组中的类来简化这一点,然后返回并让魔法发生。

但是,以下代码部分中注释掉的行会导致 Visual Studio 产生大量错误。这对我来说很有意义,但由于某种原因它不会编译。我不是 C++ 人,但经过大量谷歌搜索后,没有什么对我有用。


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

如果您的数组的大小是固定的(从您的代码来看,似乎是这种情况),那么您不需要进行动态分配(即“新”)。

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 回答
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 回答