从 C++ 中的矢量指向对象的去引用指针
Derefence pointer to object from vector in C++
我有一个插入具有以下函数的节点的类:
在节点中
class Node
{
public:
...
void insertChild(Node *child);
vector<Node *> children();
vector<Node *> _children;
};
在节点中.cpp
void Node::insertChild(Node *child){
_children.push_back(child);
}
vector<Node *> Node::children(){
return _children;
}
在特里·
class Trie
{
public:
Node *getRoot() const;
Node *root;
void addWord(string prefix);
}
在特里.cpp
Trie::Trie()
{
root = new Node();
}
Node *Trie::getRoot() const
{
return root;
}
void Trie::addWord(string prefix){
Node *current = root;
if(prefix.length() == 0)
{
current->setTypeMarker(DAT_NODE);
return;
}
for(int i = 0; i < prefix.length(); i++){
Node *child = current->lookupChild(prefix[i]);
if(child != NULL)
{
current = child;
}
else
{
Node *tmp = new Node();
tmp->setContent(prefix[i]);
current->insertChild(tmp);
current = tmp;
}
if(i == prefix.length()-1)
current->setTypeMarker(DAT_NODE);
}
}
在另一堂课上,我想遍历_children所以我有
In OtherClass.h
class OtherClass
{
public:
Trie *trie;
void addWords(string word)
void someFunction()
}
在其他类中.cpp
OtherClass::OtherClass()
{
tree = new Trie();
}
void OtherClass::addWords(string word)
{
tree->addWord(word);
}
void OtherClass::someFunction()
{
Node *root = tree->getRoot();
for(std::vector<Node *>::iterator it = root->children().begin(); it != root->children().end(); it++) {
Node * test = *it;
}
}
但是,当我运行它时,测试为零。我可以查看根并看到子节点包含我的节点,但是为什么我不能在向量迭代器中取消引用它们? children()
是我_children
的获取者
可能是你的 getter 返回 std::vector 按值而不是按引用?
吸气剂应如下所示:
std::vector<Node*>& Node::children()
{
return _children;
}
或者对于像这样的常量版本:
const std::vector<Node*>& Node::children() const
{
return _children;
}
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- C++对象引用返回不同的值
- 对象引用中的字段以不同的方法返回不同的值
- 通过向构造函数其他对象引用页面来创建对象
- 为什么在对象引用恒定时允许更改为另一个类的指针的成员变量
- 如何在C++中读取 HDF5 对象引用
- C++ 未定义的对象引用
- 从函数返回 libconfig 类设置对象引用
- qt vsaddin错误对象引用未设置为对象的istanse
- 在这种情况下,为什么使用 *此必需的对象引用返回对象引用
- 基本C - 构造contaning对象引用,并将其作为方法参数传递
- C :将对象引用作为参数给出错误:呼叫class :: function()的匹配函数
- C++OOP基础知识-是否正确返回对象引用
- 使用对象引用(可能)在调用destructor后使用对象引用
- 创建返回对象引用的成员函数的最简单方法
- 如何在C++上使用对象引用删除对象
- JNI/Android NDK-维护全局对象引用
- 为什么有些类方法返回"*this"(self的对象引用)?
- 在C++中返回伪对象引用的规则