c++ - VS2017 模板类头文件中的 std::shared_ptr 没有智能感知
问题描述
我是 std::shared_ptr 的新手,并试图在链表实现中使用它。代码是:
#pragma once
#include <memory>
template <typename T>
class Node
{
public:
Node();
Node(const T& anItem);
Node(const Node& anNode);
T getItem() const;
std::shared_ptr<Node<T>> getNext() const;
std::shared_ptr<Node<T>> getPrev() const;
void setItem(const T& anItem);
void setNext(std::shared_ptr<Node<T>> nextNodePtr);
void setPrev(std::shared_ptr<Node<T>> prevNodePtr);
private:
T item;
std::shared_ptr<Node<T>> next;
std::shared_ptr<Node<T>> prev;
};
template <typename T>
Node<T>::Node(): next(nullptr), prev(nullptr) {}
template <typename T>
Node<T>::Node(const T& anItem) : next(nullptr), prev(nullptr), item(anItem) {}
template <typename T>
Node<T>::Node(const Node& anNode) : next(anNode.getNext()), prev(anNode.getPrev()), item(anNode.getItem()) {}
template <typename T>
T Node<T>::getItem() const
{
return item;
}
template <typename T>
std::shared_ptr<Node<T>> Node<T>::getNext() const
{
return next;
}
template <typename T>
std::shared_ptr<Node<T>> Node<T>::getPrev() const
{
return prev;
}
template <typename T>
void Node<T>::setItem(const T& anItem)
{
item = anItem;
}
template <typename T>
void Node<T>::setNext(std::shared_ptr<Node<T>> nextNodePtr)
{
next = nextNodePtr;
}
template <typename T>
void Node<T>::setPrev(std::shared_ptr<Node<T>> prevNodePtr)
{
prev = prevNodePtr;
}
这是在头文件中。在任何这些成员函数中,取消引用共享指针都不会显示成员和方法。
例如,假设在setPrev()
我输入以下内容:
prev->
现在,如果它是一个原始指针(我使用原始指针进行了测试),智能感知将显示可用的成员和方法。但是对于 std::shared_ptr 智能感知不起作用,我唯一看到的是 std::shared_ptr 本身的方法(operator*
例如)。我想知道我做错了什么?
此外,如果我输入(*prev).
VS2017 只会告诉我:
IntelliSense:“没有可用的成员”
顺便说一句,它在 main.cpp 中工作,只是在头文件中不起作用,这很痛苦,因为我必须经常检查头文件,所以我想知道我对智能指针做错了什么。
解决方案
推荐阅读
- flask - 使用 WTForms 和 Jinja 进行递归
- r - 在 r 中运行 alpha 命令时返回错误
- c++ - 链接模板类时的编译性能问题
- ruby - 查找具有困难匹配条件的两个数组之间的匹配项
- c# - 是否可以将静态方法移动到另一个类并在 Visual Studio 上同时重构?C#
- mysql - 选择不同列值的计数,不包括另一列的重复值
- amazon-web-services - .NET Core API Gateway (AWS) 如何设置依赖注入 (DI) 以使用 MemCached .NET Core 包、基于 DI 的记录器等
- r - 在 R 中使用 If then 逻辑创建一个新变量
- php - 如何从 While 语句中获取多个变量?
- makefile - 使用 Make 的多个嵌套目录