c – 如何声明包含类B实例的struct A,其中类B具有返回struct A的函数?

我尽力描述标题中的目标,但这里是代码:

struct Bar {
    Foo one;
    Foo two;
}

class Foo {
    Bar function();
}

我知道这不起作用,但我怎么能完成这个想法呢?我想让结构全局化的原因是因为它也在main.cpp中使用.我已经尝试在类中声明结构,然后将类外部的结构定义为Foo :: Bar {},但这也不起作用.

我想要这样做的原因是因为我有需要返回多个变量的函数,例如一个返回商和余数的除法函数.但问题是,返回了自定义类(BigInteger)的多个实例.

解决方法:

由于Bar包含Foo的实例,后者在前者的声明中不能是不完整的.因此,在声明Bar之前,您需要声明Foo.但是,由于Foo包含一个返回Bar对象的函数,因此在声明Foo之前​​,您必须转发声明Bar.

struct Bar;

class Foo {
    Bar function();
};

struct Bar {
    Foo one;
    Foo two;
};

Bar Foo::function()
{ 
  return Bar();
}

请注意,Foo :: function的实际定义只能在Bar声明之后出现,因为该函数需要实例化Bar对象.

上一篇:Mysql创建存储过程,使用游标Cursor循环更新


下一篇:typeScript-基础知识-4-9声明文件