0

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

如果有人能告诉我是什么导致了这个问题,那将不胜感激。

4

2 回答 2

1

如果 exampleFunction 在您的 List 类中是私有的,您的 OrderedList 类将无法访问它。改为保护它。请参阅私有成员和受保护成员:C++

于 2012-10-06T02:45:07.500 回答
0

在 OrderedList 头文件中将继承的方法移至 public 并将数据成员移至受保护的工作。

更新

所以这是大约一年前的事了。然而,现在看来,它是那么的明目张胆。base class给出的指令将( List) 中的继承方法声明为private,但main其中由教科书的作者提供(用于测试目的),其中一些继承的方法被调用。虽然private无法OrderedList被正在创建的实例调用main

我们的教练后来更正了这些说明,但有时作为学生,您可以密切关注。

于 2012-10-07T21:18:36.040 回答