因此,在派生类OrderedList的头文件中,我通过告诉编译器使用using List<DataType>::examplefunction;使用基类方法来继承我先前创建的List类的某些功能。所有未被覆盖且以上述方式声明的函数都是OrderedList的私有成员。

因此,当我运行程序时,我在Microsoft Visual Studio中收到以下错误:


  错误C2248:“ OrderedList :: examplefunction”:无法访问在“ OrderedList”类中​​声明的私有成员


examplefunction在基类List中是公共的。

这是我正在使用的具体示例:

在OrderedList.h中,

private:
using List<DataType>::remove;


在List.h中,

public:
void remove () throw ( logic_error );


在List.cpp中,remove是,

void List<DataType>::remove () throw ( logic_error )
{ // Do some operations//
}


我的OrderedList头文件中的声明也是如此:

#include "List.cpp"

template < typename DataType, typename KeyType >
class OrderedList : public List<DataType>


如果有人能启发我引起问题的原因,将不胜感激。

最佳答案

如果exam​​pleFunction在List类中是私有的,则OrderedList类将无法访问它。使其受到保护。见Private and Protected Members : C++

10-08 06:30