当我有shared_ptr
一个派生类型,但 shared_ptr 的类型是基类型时,我在 Visual Studio 的 Locals 窗口中除了基类型的成员之外什么都看不到(就好像对象被切片一样)。
下面是一个非常小的程序,显示了我看到的问题。如果在shared_ptr
构造后设置断点,并且sp
在 Locals 窗口中查看变量,则看dvalue
不到。
有没有办法看到这个?也许我被托管代码宠坏了......
#include <memory>
struct Base {
int ivalue;
};
struct Derived : public Base {
double dvalue;
};
int main() {
Derived d;
d.ivalue = 42;
d.dvalue = 3.14;
auto sp = std::make_shared<Base>(d);
// break here
return 0;
}