c++ - "Request for member which is of non-class type", 赋值语句不正确?

标签 c++ templates pointers

我正在尝试循环访问名为 _snakeSegments 的列表中每个节点中包含的数据。 (注意:类是我自己写的,不是STL等的一部分)。每个数据元素都是一个 Sprite,代表我的蛇的单个部分。

我尝试编译时遇到以下错误:request for member 'GetPrev' in 'currentNode', which is of non-class type 'Node<Sprite>*' .编译后标记了我尝试在下面的 for 循环中分配下一个 currentNode 的行:

void Snake::Draw(prg::Canvas& c)
{
   Node<Sprite>* currentNode = _snakeSegments.GetHead();
   for (int i=0; i < _snakeSegments.NumberOfNodes(); ++i){
      currentNode->GetData().Draw(c);
      currentNode = currentNode.GetPrev(); //compiler shows error here
   }
}

这是 GetPrev 的定义。其中,当调用一个节点时,返回一个指向前一个节点的节点指针..

template <typename NodeType>
Node<NodeType>* Node<NodeType>::GetPrev()
{
   return _prev;
}

嗯,我有点困惑,希望得到任何帮助!请询问您是否需要更多信息/我不清楚,谢谢。

最佳答案

currentNode 是一个指针,这意味着您需要通过 `-> 访问它的属性,就像您在上面的行中所做的那样:

currentNode->GetPrev()

您真的应该尝试学习区分指针和实例。指针属性始终通过 -> 引用。

关于c++ - "Request for member which is of non-class type", 赋值语句不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966295/

相关文章:

c++ - 为什么这个对数组进行零初始化的模板化函数不能编译?

c++ - 找不到程序 .dll 文件

c++ - 字符数组中的奇怪字符

c++ - GCC 元组 "invalid use of incomplete type"

c++ - 使用模板

c++ - `std::shared_ptr` 的智能指针模拟,带有用于将回调绑定(bind)到引用计数修改事件的 API,例如释放/保留……这是一回事吗?

c++ - 如何使用模板初始化类中的静态成员数组

C++ 模板 :-Warning in a function template

C - 这个变量的类型是什么?

c - 将值加载到函数内的结构指针中