C++;从函数返回二维对象数组以在另一个函数中使用 我一直在为学校的C++项目工作,在遇到2D数组时遇到了一些问题。因此,我有以下课程: class mecanice { public: mecanice(); ~mecanice(); ... protected: private: ... MyClass Ob[8][8]; };

C++;从函数返回二维对象数组以在另一个函数中使用 我一直在为学校的C++项目工作,在遇到2D数组时遇到了一些问题。因此,我有以下课程: class mecanice { public: mecanice(); ~mecanice(); ... protected: private: ... MyClass Ob[8][8]; };,c++,arrays,function,class,reference,C++,Arrays,Function,Class,Reference,我需要一个返回Ob的方法,这样我就可以在另一个类的方法中使用它,该类将根据Ob中的内容进行操作: class doodle { public: doodle(); ~doodle(); void do_stuff(MyClass M[8][8]); ... protected: private: ... }; 我尝试过各种方法,但都以编译错误告终,这些错误通常与指针有关。有什么方法可以做到这一点吗?您不能从函数返回数组。在您的情况下,函数如下所示: M

我需要一个返回Ob的方法,这样我就可以在另一个类的方法中使用它,该类将根据Ob中的内容进行操作:

class doodle
{
public:
    doodle();
    ~doodle();
    void do_stuff(MyClass M[8][8]);
    ...
protected:

private:
    ...
};

我尝试过各种方法,但都以编译错误告终,这些错误通常与指针有关。有什么方法可以做到这一点吗?

您不能从函数返回数组。在您的情况下,函数如下所示:

MyClass[][] bar ();
他身体不好

您可以考虑将该函数以MyCu[[]]作为参数,而不是将其作为返回值返回,并适当地填充它。

void bar (MyClass foo[8][8]);
您也可以返回指针(这是合法的):

但您必须确保要返回指针的对象的内存是持久的(即,不要返回指向局部变量的指针等)。

请尝试以下操作

const MyClass ( * myMagicMethod() )[8] const;

如果不希望在其他类的方法中更改数组,则使用限定符const

另一种方法是通过引用传递数组。比如说

const MyClass ( & myMagicMethod() )[8][8] const;


在处理数组的方法中,参数也必须像reference一样声明。

是否尝试使用
typedef MyClass MyClassArray[8][8]
并返回
Ob
作为
MyClassArray
?使用
std::vector
我个人会使用
typedef MyClass(a)[8][8]
(或
typedef decltype(Ob)A;
),并使用函数return
const A&
,以澄清函数正在返回引用(因此,如果需要,typedef还可以用于声明局部变量)。不过,这只是个人喜好。非常感谢,我现在通过引用传递数组就成功了。我不知道sytanx
(&MyMethod())[8][8]
,这就是为什么我会遇到各种各样的错误。旁白:为什么结尾还有另一个
const
?如果我把它放在那里,我会得到一个编译器错误(顺便说一句,使用附带MinGW的代码块)。@GeorgeTodosi,正如我在回答中所写,您可以使用typedef简化语法。:)
typedef const MyClass ( *A )[8];

//...

A myMagicMethod() const;
const MyClass ( & myMagicMethod() )[8][8] const;
typedef MyClass ( &A )[8][8];

//...

const A myMagicMethod() const;