在构造函数中为数组赋值

时间:2012-11-10 00:50:09

标签: c++ arrays constructor initialization stdvector

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

但是,以下代码部分中的注释掉的行会导致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};
    };
};

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分: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