是否符合以下标准?你能引用那个部分吗?
struct A
{
virtual void func() = 0;
};
struct B
{
void func(){}
};
struct C : public A, public B
{
virtual void func(){ B::func(); }
};
我在 VS2010 中收到了一个奇怪的编译器警告,其等效但更复杂的代码指向func
派生类中的声明:warning C4505: unreferenced local function has been removed
. 我不知道为什么编译器认为类中声明的虚函数是本地的;但是我无法在更简单的示例中重现该警告。
编辑:
我想出了一个用于警告的小型复制案例。我认为我走错了路,假设它与功能隐藏有关。这是复制案例:
template<typename T>
struct C
{
int GetType() const;
virtual int func() const; // {return 4;} // Doing this inline removes the warning <--------------
};
template<typename T>
int C<T>::GetType() const
{
return 0;
}
template<>
int C<int>::GetType() const
{
return 12;
}
template<typename T>
int C<T>::func() const
{
return 3;
}
// Adding the following removes the warning <--------------------
// template<>
// int C<int>::func() const
// {
// return 4;
// }
我很确定这只是一个 VS2010 错误。