使用重载的*运算符取消引用类
Dereferencing class with overloaded * operator
我试图创建一个指向重载了*运算符的类的指针,但它返回了另一个值。等级代码:
template<class T> class Node
{
public:
T *pointer;
T& operator*()
{
return *pointer;
}
}
然后这个代码就不起作用了,返回int而不是指针:
Node<int>* examplePointer; //this works
Node<int> example; //creates an instance of Node<T> class
examplePointer = *example; //this doesn't work
如何使用重载的*运算符生成指针?
这个Node<int>* example;
意味着example
是Node<int>
上的指针(是的,我是captain Obvious:)。
如果之后将其与*
一起使用,则意味着您只是取消了对访问Node<int>
的指针的引用。所以,基本上你有这样的东西:
*example; // Just a pointer dereference expression type
// is something like Node<int>
**example; // something like: example->operator*();
我真的不明白你的目标是什么。。。像这样使用指向容器的指针似乎会产生很多间接性。。。
更一般地说,不能在类定义之外重载operator*
,因此不能为指针定义它。
只尝试Node<int> example
。这会给你一个Node,*example
会调用你的操作符,所以它的行为就像一个指针。
相关文章:
- C++取消引用指针.为什么会发生变化
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 取消引用运算符不能重载
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C++ 关于指针取消引用的技术问题
- 没有取消引用/解包对象的标准方法?
- 列表 iter 不取消引用 使用列表进行插入排序
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 取消引用结束指针到数组类型的一个
- 取消引用向量时出现问题
- 取消引用指向整数的指针时获得不同的结果
- C++:取消引用十六进制值,有点语法问题
- C/C++ 取消引用错误:在空检查之前取消引用
- 取消引用后C++空测试
- 立即取消引用unique_ptr
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 取消引用 void 指针以将值分配给结构
- boost_multi_index迭代器取消引用给出常量
- 矢量迭代器不能与 std::shared_ptr<> 取消引用
- C++我们可以取消引用此指针吗?如果是这样,那么如何,如果不是,那为什么?