无法从引用访问成员变量或方法

时间:2016-10-20 04:16:31

标签: c++ pointers reference

关于引用如何工作的小混淆。 如果我有一个引用,我可以访问成员方法和变量吗?它不应该与指针相同吗?我可以将引用转换为指针吗?

问题在于从SELECT A.commentid AS comment_num, A.content AS Content, count(B.commentid) as replies_count FROM comment A LEFT JOIN replies B on A.commentid=B.commentid GROUP BY A.commentid, A.content 进一步

的返回对象访问元素
getName()

错误是: “template <typename T> bool BSTree<T>::insert(BSTNode<T>* currentnode, T* data) { std::string value = data -> getName(); std::string current = currentnode -> getData() -> getName(); return false; } 的基本操作数具有非指针类型->

如果我尝试使用属于对象Object的{​​{1}}方法返回(通过引用),那么为什么它不像上一行一样工作?在我以前的程序中,通过类似于getName()的方法返回对象工作得很好。

2 个答案:

答案 0 :(得分:2)

如果getData()正在返回引用,那么您将使用:

std::string current = currentnode->getData().getName();

通常,->取消引用指针,不要将它与引用一起使用。

答案 1 :(得分:1)

  

&#34;如果我尝试使用getName()方法,该方法是getData返回的对象(通过引用)&#34; ...

我们无法看到getData是如何声明的,但很有可能它会返回一个引用(而不是一个指针)因此你应该使用.而不是->