Понимание окна просмотра в VisualStudio 2010

Я не могу понять, что означает часть объекта в квадратных скобках ([bsm :: Material], см. Рис. Ниже). Я ожидал бы, что объект ml типа MaterialLayer будет составлен только из части типа Object (базовый класс) + два поля толщины и материал (указатель на Material).

Итак, какова часть между квадратными скобками, показанная Visual Studio 2010 в ее окне Watch?

введите описание изображения здесь

Вот определение классов 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
};

2

Решение

Это выглядит как ml объявлен как bsm::MaterialLayer*, но указатель типа bsm::Material* было присвоено ему путем типирования:

bsm::MaterialLayer *ml;
bsm::Material *foo;
ml = (bsm::MaterialLayer *)foo;

Это не приводит к ошибке приведения типа во время компиляции, но почти наверняка приведет к таким ошибкам, как бессмысленные значения в thickness а также material,

Однако, поскольку они оба имеют общего родителя, Watch показывает своего реального потомка в квадратных скобках.

3

Другие решения


По вопросам рекламы [email protected]