我有个问题。我想使用在成员函数中生成的数组的单个元素进行操作,但是它不起作用。这是我的代码:

    using namespace std;

    class Example
    {
    public:
        int *pole;
        void generate_pole();
    };

    void Example::generate_pole()
    {
        int *pole = new int [10];

        for (int i = 0; i < 10; i++)
        {
            pole[i] = i;
        }
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
        Example reference;

        reference.generate_pole();

        cout << reference.pole[1] << endl;          //there is the problem

        system("pause");
        return 0;
    }


如何获得对该元素的访问权限?真正的问题在哪里?谢谢!

最佳答案

int *pole = new int [10];在本地范围内创建一个名称相同的变量pole。这遮盖了成员变量。

解决方法:从错误行中删除int*pole = new int [10];

也就是说,在这种情况下,我倾向于使用构造函数来设置成员变量:当然,默认情况下,您应该将pole初始化为nullptr。这样,当类的实例超出范围时,您可以在析构函数中delete[] pole。否则您的代码将像漏勺漏水一样泄漏内存。

另一种方法是使用std::vector<int> pole;并让C ++标准库为您处理所有内存。

09-12 22:04