C ++:通过引用传递(指针指向?)对象数组

我是C ++的新手,使用按指针传递和引用创建对象数组时遇到了很大的麻烦。这不是实际的代码;这是代码本质上的示例。

#include <iostream>

class MyClass
{
    public:
        MyClass();
        static int doStuff(MyClass *&classArray);
        void print_number();

    private:
        int number;
};

MyClass::MyClass()
{

}

int MyClass::doStuff(MyClass *&classArray)
{
    int i = 0;
    for (i = 0; i < 10; i++) {
        *classArray[i].number = i;
    }
    return i;
}

void MyClass::print_number()
{
    std::cout << number << "\n";
}

int main(void)
{
    MyClass *test = nullptr;
    int p = MyClass::doStuff(test);
    std::cout << p << '\n';
    for (int i = 0; i < 10; i++) {
        test[i].print_number();
    }
    return 0;
}

编译时,这会产生分段错误。

青蛙

这是您的操作方式(不要忘记delete[]在程序或析构函数的末尾删除classArray


new运算符必须具有默认构造函数,如果要使用非默认构造函数,则更容易创建副本构造函数,然后创建一个临时对象并进行复制。

#include <iostream>

class MyClass
{
public:
    MyClass();
    MyClass(int x, int y);
    MyClass(MyClass &OldClass);
    static int doStuff(MyClass *&classArray, int Size, int x, int y);
    void print_number();

private:
    int number, x, y;
};

MyClass::MyClass()
{
    number = 0;
    x = 0;
    y = 0;
}

MyClass::MyClass(int x, int y)
{
    number = 0;
    this->x = x;
    this->y = y;
}

MyClass::MyClass(MyClass &OldClass)
{
    this->number = OldClass.number;
    this->x = OldClass.x;
    this->y = OldClass.y;
}

int MyClass::doStuff(MyClass *&classArray, int Size, int x, int y)
{
    if (Size > 0)
    {
        classArray = new MyClass[Size];
        for (int i = 0; i < Size; i++)
        {
            classArray[i] = MyClass(x, y);
            classArray[i].number = i;
        }

        return Size;
    }
    else
        return 0;
}

void MyClass::print_number()
{
    std::cout << number << " " << x << " " << y << "\n";
}

int main(void)
{
    MyClass *test = nullptr;
    int p = MyClass::doStuff(test, 10, 5, 6);
    std::cout << p << '\n';
    for (int i = 0; i < p; i++) {
        test[i].print_number();
    }
    delete[] test;
    std::cin.get();
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++-无法通过引用传递迭代器指向的对象

来自分类Dev

C ++数组是通过引用还是通过指针传递的?

来自分类Dev

指针并通过引用传递c ++

来自分类Dev

在C函数中传递指向数组的指针

来自分类Dev

C ++制作指向const对象的指针数组

来自分类Dev

指向C ++中对象数组的指针

来自分类Dev

通过引用在C中传递指针

来自分类Dev

C ++-创建指向包含类对象指针的数组元素的指针

来自分类Dev

C ++:传递数组与指向数组的指针相同吗?

来自分类Dev

C ++ 11通过引用或指针传递功能对象的正确方法?

来自分类Dev

使用Boost.Python通过引用/指针将C ++对象传递给Python解释器

来自分类Dev

使用C中的指针通过引用传递和更改数组

来自分类Dev

指向数组的C指针

来自分类Dev

C ++:通过函数传递指针数组的语法

来自分类Dev

C - 指向指针数组的指针

来自分类Dev

无法“指向” C中传递的函数指针数组

来自分类Dev

将指向char数组的指针作为函数的参数传递-C

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

将指向数组值的指针从 Cython 传递给 C

来自分类Dev

传递一个指向指向 C 结构的指针数组的指针

来自分类Dev

在C ++中通过引用传递对象

来自分类Dev

通过引用传递数组并修改值C ++

来自分类Dev

在C中通过引用传递多维数组

来自分类Dev

在C中通过引用传递数组

来自分类Dev

C ++通过引用传递位域数组

来自分类Dev

在C中通过引用传递多维数组

来自分类Dev

在C ++中通过引用传递数组

来自分类Dev

在C中通过引用传递数组

来自分类Dev

C ++如何通过引用函数传递数组