3

当前我有指针适用于我的两个对象指针,例如

Object * obj1;
Object * obj2;

obj2 = obj2;

如果我有,我将如何让它工作

Object * array[10][10];
Object * newarray[10][10];

我可以在不使用 for 循环循环遍历元素的情况下将数组分配给 newarray 吗?

问是因为我有我的主类,其中包含数组。然后将其传递给子类以便对其进行处理,需要将副本保存在新类中,以便子类函数可以访问它。

谢谢

4

2 回答 2

4

Object * array[10][10];不是指向 10x10 对象数组的指针它是一个指向对象的 10x10 指针数组。

#include <iostream>
struct Object {};
Object * arr[10][10];
int main(int argc, const char* argv[])
{
    std::cout << "sizeof arr = " << sizeof(arr) << std::endl;
    return 0;
}

产生 arr1 = 400 的大小

如果你想坚持类似 C 的行为,你可以使用 memcpy:

#include <iostream>
#include <string.h>

struct Object {};
Object * arr1[10][10];
Object * arr2[10][10];

...

memcpy(arr1, arr2, sizeof(arr1));

如果您想像其他人所说的那样采用 C++ 方法,请查看 std::array 或 std::vector。

于 2013-05-27T04:50:13.430 回答
1

Kfsone 的解决方案达到了目的。以下示例代码说明了这一点。然而,想在他的帖子中发表评论,那么代码将是不可读的。

#include<stdio.h>
#include<string.h>

int main()
{
    int *x1[2][2];
    int *x2[2][2];

    int a1 = 100;
    int b1 = 101;
    int c1 = 110;
    int d1 = 111;


    int a2 = 200;
    int b2 = 201;
    int c2 = 210;
    int d2 = 211;

    x1[0][0] = &a1;
    x1[0][1] = &b1;
    x1[1][0] = &c1;
    x1[1][1] = &d1;


    x2[0][0] = &a2;
    x2[0][1] = &b2;
    x2[1][0] = &c2;
    x2[1][1] = &d2;

    memcpy(x1,x2,sizeof(x2));
    printf("%d\n",*x1[1][1]);

    return 1;
}
于 2013-05-27T05:37:05.203 回答