我无法理解方括号内的对象部分的含义([bsm::Material] 参见下图)。我希望MaterialLayer类型的对象ml仅由Object类型(基类)的一部分+两个字段厚度和 Material (指向Material的指针)组成。
那么,Visual Studio 2010 在其监 window 口中显示的方括号之间的部分是什么?
以下是 Material、Object 和 MaterialLayer 类的定义:
class Object
{
public:
// Methods
};
class Material : public Object
{
int type;
std::string name;
std::vector<Property *> properties;
public:
// Methods
};
class MaterialLayer : public Object
{
double thickness;
Material * material;
public:
// Methods
};
最佳答案
看起来ml
被声明为bsm::MaterialLayer*
,但是bsm::Material*
类型的指针被分配给通过类型转换:
bsm::MaterialLayer *ml;
bsm::Material *foo;
ml = (bsm::MaterialLayer *)foo;
这不会在编译时生成类型转换错误,但几乎肯定会导致错误,例如 thickness
和 material
中的无意义值。
但是,由于它们都有一个共同的父级,因此 Watch 在方括号中显示其真正的子级。
关于c++ - 了解 Visual Studio 2010 中的监 window 口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442543/