这似乎是一个愚蠢的问题,但我希望能够实例化派生类并将其分配到一行中的基类:
class A { };
class B : public A { };
// i can do this
A *base;
B derived;
base = &derived;
// i'd like to do something like this
A *base;
base = &B(); // produces a warning: taking address of temporary
Run Code Online (Sandbox Code Playgroud)
我试图在不使用new运算符的情况下获得多态行为.我认为编译器正在插入构造函数的返回值的临时引用.是否有可能指示编译器我实际上想要使用该地址进行分配?
*编辑
这是一个小背景.解析xml文件时我有类似的东西:
class element { virtual void load_xml(...); };
class city : public element { ... };
class state : public element { ... };
element *base;
// read some xml
if (xml_node …
Run Code Online (Sandbox Code Playgroud)