Eclipse CDT无法在模板类中解析方法
Eclipse CDT can not resolve method in template class
我对Eclipse CDT索引/代码分析仪有问题。当我在编辑器中编写以下代码时,它向我显示了const int* p = x.f();
-Invalid arguments Candidates are: int * f()
上的错误。因此,由于某种原因,它无法识别B类中的方法const T* f() const
。
template<typename T>
class A {
public:
const T* f() const { return 0; }
};
template<typename T>
class B : A<T> {
public:
using A<T>::f;
T* f() { return 0; }
};
void main() {
const B<int> x;
const int* p = x.f();
}
有什么想法为什么会发生以及如何解决问题?
为什么发生?
因为CDT C 解析器无法识别using A<T>::f
在B
中声明一个满足呼叫的成员函数 const int* p = x.f()
中的CC_6。您可以通过添加一个 const
to T* B::f()
的预选赛。这满足了解析器(但击败了成员函数的目的)。
如何解决问题?
好吧,在基类中拥有const T* f() const
似乎很奇怪和T* f()
在派生类中。除非有一些引人注目的原因,您可以在A
或B
(可能A
)中声明这两个成员功能。或者,您可以:
- 给他们不同的名称,也许是
f
和f_const
或 - 删除
using A<T>::f;
,然后将const int* p = x.();
替换为明确的合格电话const int* p = x.A<int>::f();
您也可以忽略问题,因为解析器的混乱没有在IDE中成功停止您的程序构建。(很高兴有一个实时C 解析器,除非它不同意您的编译器)。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- Eclipse CDT 不了解方法定义是什么
- Eclipse CDT将方法定义定义到标头文件
- Eclipse CDT无法在STL容器中的元素上解析方法
- Eclipse CDT无法在模板类中解析方法
- Android NDK Eclipse CDT 不允许我使用 substr 方法的字符串
- Eclipse CDT——是否有一种方法可以在启动新启动之前终止之前正在运行的启动?
- 在Eclipse中使用c++的CDT重命名类的更舒适的方法