我正在尝试创建一个指向具有*运算符重载的类的指针,但它返回另一个值。 班级代码:
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
如何使用重载*运算符创建指针?
答案 0 :(得分:0)
此Node<int>* example;
表示example
是Node<int>
上的指针(是的,我是队长Obvious :)。
如果您之后使用*
,则表示您只是取消引用指向Node<int>
的访问权限。所以,基本上你有类似的东西:
*example; // Just a pointer dereference expression type
// is something like Node<int>
**example; // something like: example->operator*();
我真的没有看到你的目标是什么......使用指向这样的容器的指针似乎会产生很多间接......
更一般地说,你不能在类定义之外重载operator*
,所以你不能为指针定义它。
答案 1 :(得分:0)
尝试Node<int> example
。这为您提供了一个节点,*example
将调用您的运算符 - 因此它的行为类似于指针。