小编Chr*_*ris的帖子

指向数据成员与非成员的指针的隐式转换

我见过的关于成员指针的大多数讨论都集中在成员所属类型允许的转换上.我的问题是关于成员类型的转换.

struct Base{};
struct Derived : public Base{};
struct Foo{ Derived m_Derived; };
Run Code Online (Sandbox Code Playgroud)

鉴于这些声明,以下代码会产生错误(MSVC 2008):

// error C2440: 'initializing' : cannot convert from 'Derived Foo::* ' to 'Base Foo::* '
Base Foo::*p = &Foo::m_Derived;
Run Code Online (Sandbox Code Playgroud)

从Derived*到Base*的转换通常是允许的 - 为什么差异在这里?

c++

7
推荐指数
1
解决办法
387
查看次数

标签 统计

c++ ×1