将基础对象返回到升级派生类的最合适方法是什么?

iam*_*ind 2 c++ inheritance casting

struct B {};  // B contains data members
struct D : B {};  // D doesn't contain ANY data member

B g_b;  // global object
D& fun ()  // want to return by reference ONLY
{
  return <???>(g_b);  // how ???
}
Run Code Online (Sandbox Code Playgroud)

[注意:我想避免重载构造函数(或赋值),如D(const B&).]

Mat*_*Mat 5

你要做的是非法的.g_b不是D.