【问题标题】:"base operand of ‘->’ has non-pointer type" But It is pointer [closed]“'->' 的基本操作数具有非指针类型”但它是指针 [关闭]
【发布时间】:2017-12-13 12:31:50
【问题描述】:

这是我的代码。(我简化了这个,通常有很多成员函数,但错误还是一样,所以我简化了它。)

template <class K,class V>
class MyMap:public MySet<pair<K, V> >{};

int main(void){

    MyMap<int,int> map1;

    MyMap<int,int>::MyIterator it;

    it=map1.begin();

    cout<<it->first<<endl;

    return 0;
}

【问题讨论】:

  • 看起来类型只是MyIterator,而不是指针。
  • +1 用于创建一个(相对)最小的测试用例来实际重现问题(现在的问题很少见:)
  • @OliverCharlesworth 不幸的是,你赞美这个例子太快了。修改后就不完整了
  • 不清楚你的问题是什么,也许在编辑之前很清楚,但现在不是了。
  • 请恢复您的编辑。这个问题没有它是可以回答的,但没有它。

标签: c++ templates inheritance stl std-pair


【解决方案1】:

您需要将-&gt; 运算符提供给MyIterator 类,如下所示:

T *operator->() {
    return data;
}

【讨论】:

  • 非常感谢。我花了 2-3 个小时完成了它。
  • @EasterGamer 不客气。如果它解决了您的问题,请接受答案。如果出现其他问题,请提出新问题。
  • @EasterGamer,在你完成之后,我推荐Code Review 让它变得更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多