指向相同类型的对象
Pointing to an object of the same type
我觉得这个问题可能有点微不足道,但我根本无法理解它。我目前有一个类 Node,它试图使用指针 prevNode 指向当前节点之前出现的节点。但是,我似乎无法访问prevNode中的任何变量。
从以下代码运行 Main .cpp 时,它会打印结果"15340756"。我哪里出错了?抱歉,因为我对C++还是有点陌生。
节点.h
#include "stdafx.h"
class Node
{
public:
Node();
void setPrevNode(Node n);
Node getPrevNode();
int i;
private:
Node *prevNode;
};
节点.cpp
#include "stdafx.h"
#include "Node.h"
Node::Node(){
i = 0;
}
void Node::setPrevNode(Node n){
prevNode = &n;
}
Node Node::getPrevNode(){
return *prevNode;
}
主.cpp
#include "stdafx.h"
#include "Node.h"
int _tmain(int argc, _TCHAR* argv[])
{
Node nodes[] = {Node(), Node()};
nodes[0].i = 1;
nodes[1].setPrevNode(nodes[0]);
printf("%i", nodes[1].getPrevNode().i);
while(true){
}
return 0;
}
void setPrevNode(Node n);
这里声明setPrevNode
获取作为参数传递的节点的副本,并指向该节点。函数返回后,指向的节点不再存在,你得到的是未定义的行为。
Node
作为引用或指针:
void setPrevNode(Node& n)
{
prevNode = &n;
}
void setPrevNode(Node* n)
{
prevNode = n;
}
在同一行上,getPrevNode
被定义为返回前一个节点的副本。您肯定希望在此处返回引用,尽管您也可以返回指针:
Node& getPrevNode()
{
return *prevNode;
}
Node* getPrevNode()
{
return prevNode;
}
相关文章:
- 数组中不同类型的对象并获取每个对象的类型
- 如何在模板函数中根据对象的类型构造不同的对象?
- 用于确定 C++ 中对象的类型的语句
- 如何确定迭代器在 c++ 模板函数中指向的对象的类型?
- C++ 中的对象创建类型有什么区别?
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- C 期望类对象的类型说明符
- 如何对对象数组进行排序,而不考虑对象变量类型
- 该表达式必须具有对象指针类型
- C++如何在模板中推断可调用对象的类型(参数列表和返回值)
- <T> 从类型对象创建类型<T1>对象的构造函数
- 通用B树,用于存储自定义对象/数据类型
- 异常表达式创建的异常对象的类型
- 如何查找多态基类向量中包含的对象的类型?
- 是否可以使用放置新来更改多态对象的类型?
- {对象}的类型是什么
- 将对象的第一个字段强制转换为对象的类型是否真的安全?
- C++在运行时确定多态对象的类型
- 检查对象的类型是否是从特定类继承的
- C++对象的类型定义比较,使用编译器忽略错误的类型