C++如何从成员函数访问变量?

标签 c++ arrays function member

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

    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];

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

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

关于C++如何从成员函数访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32501703/

相关文章:

c - 在 C 语言中,给返回指针的函数赋值有什么作用? *功能=值

javascript - 为什么如果我将对象传递给函数,我不需要在 javascript 中声明函数参数

java - Collections.shuffle() 真的足够随机吗?实际例子似乎否定了这种说法

android - 如何将 edittext 值存储在字符串数组中?

c - 将数组指针传递给 C 中的函数

c++ - 内联函数和宏哪个更快

c++ - 我错过了什么?未定义引用

c++ - 这种从堆栈中删除元素的方法如何工作?

c++ - 如何从libtorch输出中删除乘法器并显示最终结果?

c++ - 如何使用我的 if-else 语句根据输入的用户体重执行特定操作,然后将其显示到控制台?