2 kbhao7788 kbhao7788 于 2017.01.08 17:18 提问

c++ operator[] 问题怎么办
c++

#include

using namespace std;
#include
struct ho
{
int math;
char jiu;
};
struct hao
{
CList list;
int operator
{
int u = 0;
POSITION pos = list.GetHeadPosition();
while (pos)
{
ho dat=list.GetAt(pos);
if (h == u)
{
return dat.jiu;
}
list.GetNext(pos);

    }
}
void add()
{
    ho di;
    cin >> di.jiu >> di.math;
}

};
int main()
{

hao h;
h.add();

cout << h[0] << endl;

}

调试时说:
h[0] 没有与这些操作数匹配的“[]”运算符怎么回事求大神解救一下

4个回答

ai977313677
ai977313677   2017.01.08 18:16

你是想做什么?你也没有重载这个操作符指定运算,也没有创建h为数组,指针,怎么可以这样使用[]?

ai977313677
ai977313677 直接cout<<h;应该就好了,感觉你并不需要创建一个数组。
一年多之前 回复
kbhao7788
kbhao7788 那怎么改代码怎么写谢谢谢谢
一年多之前 回复
sum_TW
sum_TW   2017.01.08 18:52

看下我的博客,里面有重载[]运算符的。

qi_700
qi_700   2017.01.08 22:32

应该是需要运算符重载的

a29562268
a29562268   2017.01.09 07:54

h对象属于数组对象,或者用重载运算

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++:error C2593: \'operator <<\' is ambiguous
//代码:#include#includeusing namespace std;class Time{   public:              int hour, minute, second;    void set(int h, int m, int s){hour =h, minute =m, second =s;}    friend Time& operator ++(Time
C语言中的Operator
C|Operator问题:#include <stdio.h> int main() { int i = 3; printf("%d", (++i)++); return 0; }答案:Compile-time error解释:在c语言中,前缀和后缀操作符需要对左值进行操作,并返回右值,表达式(++i)++ 在执行过程中,首先增加 i 的值(i是左值),然后返回右值(++i)
分数计算器
傻算的计算器 多年前的课堂作业 比较简单 class Fraction; bool operator>(int n,Fraction &c); bool operator>(Fraction &c,Fraction &f); bool operator>=(int n,Fraction &c); bool operator>=(Fraction &c,Fraction &f); bool operator==(int n,Fraction &c); bool operator==(Fraction &c,Fraction &f); bool operator!=(Fraction &c,Fraction &f); bool operator!=(int n,Fraction &c); bool operator<=(Fraction &c,Fraction &f); bool operator<=(int n,Fraction &c); bool operator<(Fraction &c,Fraction &f); bool operator<(int n,Fraction &c); Fraction operator-(int n,Fraction &c); ostream&operator<<(ostream& o,Fraction& f); istream&operator>>(istream& input,Fraction& f);
[C/C++]_[操作符重载operator type()和operator()的区别]
1.看到WTL的CWindow源码时会发现这样的operator HWND()重载,仔细看会发现它并不是重载()操作符.
理解 operator=
    前几天有人在水源C版提出这样一个问题.先是代码如下;#include iostream>using namespace std;class Base...{public :    Base& operator=(const Base &a)    ...{        cout"Base ="endl;        return *this;    }};class Devid
c语言 cast operator
Syntax  ( type-name ) expression n addition to the implicit conversions, the following conversions are allowed: 1、Any integer can be cast to any pointer type. Except for the null pointer constan
c++中sort函数调用报错Expression : invalid operator <的内部原理
c++中sort函数调用报错Expression : invalid operator <的内部原理,分析内部源码,深入错误发生的根源,避免在同一个地方的第二次摔倒
Expression : invalid operator < 解决方法
从技术上说,用于排序关联容器的比较函数必须在它们所比较的对象上定义一个“严格的弱序化(strict weak ordering)”。(传给sort等算法的比较函数也有同样的限制),就是两个对象比大小或先后的规则,比如两个 string对象比大小的规则就是看首字母的ASCII码谁小,谁就小;如果相同看第二个字母。。。依次这样,就是这样的规则。 转自http://blog.csdn.net/
C++中关于operator assignment
最基本的形式是:widget & operator= (const widget  & )知道为什么要返回引用吗?1. 因为c++设计的目的是要使得自定义类也可以像内置类型那样可以有简单的操作:像operator assignment就是其中之一。比如int a, b,c,你可以像这样赋值 a=b=c;那么对于:widget wa, wb,wc;也应该可以进行这样的操作才是,wa= wb= wc,
关于operator void*()和bool operator !()的一点理解
分类: c++2013-11-09 11:19 287人阅读 评论(0) 收藏 举报       C++中有特殊的两个操作符可以重载,分别是void* 和 !       先上代码: [cpp] view plaincopy class A   {   public:      };      int main()   {