带有 MinGW 的 C++:在转换结果类型上忽略类型限定符:但是忽略哪个限定符?

问题描述 投票:0回答:1

我有抽象类

A
和派生类
B
,它们公开继承自
A

我将指向

const
const A
指针传递给函数。在此函数中,我将
static_cast
指向指向
const
const B
指针并得到错误
type qualifiers ignored on cast result type
(因为我们使用
-Werror=ignored-qualifiers
)。

这里出了什么问题?在我看来,我拥有所需的所有

const
限定符。

void foo(const A* const pA)
{
    const B* const pB = static_cast<const B* const>(pA); // Error
   
    // ... use pB ...
}

编辑:使用

dynamic_cast
不能解决问题。为什么呢?

c++ compiler-errors mingw static-cast qualifiers
1个回答
0
投票

顶级预选赛。也就是这里的第二个:

static_cast<const B* const>(pA)

非类非数组纯右值不能有cv限定符,所以它会被默默地忽略。

© www.soinside.com 2019 - 2024. All rights reserved.