使用子类从std :: Pironity_queue获取容器时会编译错误
Compiles error when get container from std::priority_queue using subclass
我想使用子类从priority_queue
获取容器,但是PQI_OK
编译OK,PQI_FAIL
失败,为什么?
#include <queue>
#include <iostream>
class PQI_OK : public std::priority_queue<int> {
public:
std::vector<int>& GetContainer() { return c; }
};
template <class Tp, class Container, class Compare>
class PQI_FAIL : public std::priority_queue<Tp, Container, Compare> {
public:
Container GetContainer() {
return c;
}
};
int main(int argc, char *argv[])
{
PQI_OK queue;
queue.push(1);
queue.push(2);
for (auto it = queue.GetContainer().begin(); it != queue.GetContainer().end(); ++it) {
std::cout << *it << std::endl;
}
return 0;
}
错误:
tmp.cc:14:12: error: use of undeclared identifier 'c'
return c;
^
1 error generated
当基类取决于模板参数时,您需要使用this->
从基类访问数据成员:
Container GetContainer() {
return this->c; // error: use of undeclared identifier 'c'
}
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译