class的一个古怪问题,这是怎么回事?

各位大佬来帮一下我这位菜鸟吧!!!!

我在编程时弄了一个class
如下:

struct bowpicture
{
    string a[15];
};

再如此定义:

bowpicture p[21];

再这样赋值:

p[1]={"   |\ "
      "   | \ "
       "  | | "
      "   | /"
      "   |/"};

再输出:

for(int i=0;i<6;i++);
{
      cout<<p[1][i];
}

它就会报错:

190 12  F:\arrow.exe\arrow.cpp  [Error] no match for 'operator[]' (operand types are 'bowpicture' and 'int')

请各路大侠出手相助
告诉我这是怎么回事
我会感谢你们所有人的

4个回答

从报错来看,cout << p[1][i];这句话的第二个中括号的使用,造成了错误.没有与这些操作数匹配的"[]"运算符.
1.p[i][i]这个格式是二维数组的写法,个人猜测题主想打印出的结构体中字符数组内的字符,所以正确的写法应该是
p[1].a[i];,,,这样依旧存在问题,因为cout方法重载的<<,没有重载string的输出.

cout<<p[1][i]; 修改为 cout<<p[1].a[i].c_str();
这一行报错应该就能解决了。其他有报错再贴出来。

benpaodaoren
benpaodaoren 回复qq_43509688: 刚才发的这两种方式都可以换行
6 个月之前 回复
benpaodaoren
benpaodaoren 回复qq_43509688: cout<<p[1].a[i].c_str()<<"\n"; cout<<p[1].a[i].c_str()<<endl;
6 个月之前 回复
qq_43509688
qq_43509688 这里在问一下怎么换行
6 个月之前 回复
qq_43509688
qq_43509688 谢谢,没有报错了,鄙人在此叩头感谢
6 个月之前 回复

报错就是说你这个类还没有下标【】这个功能。自定义的类若要使用运算符,是需要运算符重载的,例如赋值,加号、下标等。

结构体中的数组a[]不是string数据类型,p[1]不能直接赋值,必须调用p[1]下的成员数组a,for(..)括号后面不能加分号

qq_43509688
qq_43509688 谢谢
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
class的古怪问题?
在一个组件包中的单元文件中有如下代码:rnrnTAclass = class;rnrnTAclass = class(TGraphicControl)rn privatern F11:integer;rn ....rn protectedrn ...rn publicrn ...rn ...rn publishedrn end;rnrn 按照书上说的:TAclass = class; 这一句说明TAclass继承自默认的Tobject,但紧接着它又重定义了TAclass类,这次它继承自TGraphicControl,一个类可以继承自两个基类吗?rn 还是我理解错了???rn 这样定义有什么作用?
这是怎么回事?这是怎么回事?
![图片说明](https://img-ask.csdn.net/upload/201505/04/1430746862_798078.png)
class中还有class 这是怎么回事,该如何理解
[code=C/C++]class Arnrnpublic:rnclass B;rnclass Brn...;rnrn[/code]rnrn这个在书上没有过介绍 请问是什么意思呀...头晕晕的
一个古怪的串口通讯问题...
我使用CreateFile,ReadFile用OverLapped方式读取串口,超时设置为(MAXDWORD,0,0,50,5000),读缓冲大小为12个字节,出现下面的怪事:rn从刚刚打开串口开始算起,对方发来的前12个字节无论如何也接收不到,之后则完全正常。我改为14个字节,则前14个字节也接收不到,似乎超时设置在整个缓冲区第一次填满之前根本不起作用...rn哪位老师指点一下,十分感谢,十分感谢...
一个古怪的DIALOG问题
在做项目时,出现这样一个问题:rn rn 在一个对话框中增加一个COMBO BOX控件,当不进行变量绑定时,DOMODAL后按《CANCEL》,没有任何问题,当做了变量绑定后,按《CANCEL》后,发生错误,提示是在控件DESTROY时出错,而我没有对控件做任何动作。rnrnrn 为了验证该问题, 我换用CLISTCTRL控件,发生同样的问题。rnrn 当我重新INSERT一个DIALOG,然后做同样的动作,没有问题产生。rnrn 请问高手,问题怎么解决,请发ALEX_2K@ZTE.COM.CN 谢先
一个超级古怪的问题
环境:win7 64位rn我后台拼一个超级复杂的html,使用的是stringbulider,其中有一节代码.我明明没有添加内容.但debug却发现有一串html自动给我加上去的rnrn代码如下:rnprivate StringBuilder sb = new StringBuilder();rnrnprivate job()rnrnsb.Remove(0, sb.Length);rn//-------上面还有一些往sb添加文字的代码rnthis.sb.Append(""); rn//此时sb的值是 rn// rn// aaarn// rn// aaarn// rn//然后我调用了一个递归函数生成 了一个字符串rnvar str=do1(sss);rn//然后我在下面那行下断点时.就会发现.在append之前,值已经变成了rn// rn// aaarn// rn// aaarn// rn// rn//rnsb.Append(str);rnrn问题就是这么怪,为什么会自动帮我添加了N个帮我去闭合掉html
一个古怪的问题
下面是一个DLL完整的代码:rn// a.hrn#ifdef EXPORTSrn rn #define SDKAPI __declspec(dllexport)rnrn#elsernrn #define SDKAPI __declspec(dllimport)rn #pragma comment(lib, "Test00Dll.lib")rnrn#endifrnrnSDKAPI void A(map > *b);rnrn//a.cpprn#include rn#include rnusing namespace std;rnrn#include "a.h"rnrnSDKAPI void A(map > *b)rnrn b->insert(map >::value_type("4","s"));rnrnrnEXE的代码如下:rn#include rn#include rnusing namespace std;rnrn#if defined (ERROR)rn#include "a.h"rn#endifrnrn#if defined (RIGHT)rnvoid A(map > *b)rnrn b->insert(map >::value_type("4","s"));rnrn#endifrnrnvoid main()rn map > a;rn A(&a);rnrnrn请各位看看,把代码拷回去试验一下。我和恶魔都遇到了奇怪的问题。rn编译环境:VC 6,不连接MFC
一个字体设置的古怪问题?
哪位帮我看看这个问题,为什么设置了字体("FIXEDSYS"),录入的英文字母还是非("FIXEDSYS")体,(例如:录入0A0,注:前面为2个零,不是字母O,就会发现2个零的字体不同),下面是全部代码,不知是怎么一回事,望高手指点?rn——————————————————rnunit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs,richedit;rnrntypern TForm1 = class(TForm)rn procedure FormCreate(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rnrnimplementationrnrnvarrn Handle:THandle;rn mWnd:HWnd;rnrn$R *.dfmrnrnprocedure TForm1.FormCreate(Sender: TObject);rnvarrn hFont:integer;rnbeginrn //创建文本框rn mWnd:= CreateWindowEx(WS_EX_CLIENTEDGE, 'richedit20a', '', ws_child or ws_visible or es_multiline or ws_vscroll or ws_hscroll or ES_NOHIDESEL, 0,0,form1.width,form1.height, form1.handle, 0, 0, 0);rn //设置文本框字体rn hFont:= CreateFont(-12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Fixedsys');rn sendmessage(mWnd,WM_SETFONT,hFont,0);rn //显示文本框rn ShowWindow(mWnd, SW_SHOWNORMAL);rnend;rnrninitializationrn Handle:= LoadLibrary('riched20.dll');rnrnfinalizationrn FreeLibrary(Handle);rnrnend. rn
请教一个古怪的问题?
我的系统是win2000,我用asp做的网页,在联网的时候可以正常执行,但是我把那个右下角的小电视禁用,或者拔掉网线,该网页就不能执行了,是不是什么设置不正确rn可是我在别的单机操作时,却是正常的,请问为什么
一个古怪问题
程序中,把一个文件保存到电脑上,就是不能保存到桌面上,其他地方多可以的,这个是怎么回事啊?
一个古怪的网络问题。
我在网络维护中先后出现两次这样的情况。rn我的网卡是10M网卡,接在100M的硬HUB上,开始使用正常,但是使用一段时间后就出现了问题连不上网,换到支持10/100M的HUB上又能连上网络。rn按道理10M网卡接在100M硬HUB上一开始就应该连不上网络的,但是我不知道为什么他可以好上一段时间才出现如上的问题,而且他好的时间可以持续半个月。rn请大吓指点一下迷津。
一个古怪的问题:
Search.ascx就在C:\Inetpub\wwwroot\BLOG\Controls\Blog目录下,系统却这样提示:问题到底出在哪儿?rn 头都想破了,还是解决不了。。。。rn“/”应用程序中的服务器错误。rn--------------------------------------------------------------------------------rnrn分析器错误 rn说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 rnrn分析器错误信息: 文件“/BLOG/Controls/Blog/Search.ascx”不存在。rnrn源错误: rnrnrn行 1: <%@ Page language="c#" Inherits="WesternByte.MyBlog.Blog.Article" CodeFile="Article.aspx.cs" %>rn行 2: <%@ Register TagPrefix="Webdiyer" Namespace="Wuqi.Webdiyer" Assembly="aspnetpager"%>rn行 3: <%@ Register TagPrefix="MyBlog" TagName="Search" Src="/BLOG/Controls/Blog/Search.ascx" %>rn行 4: <%@ Register TagPrefix="MyBlog" TagName="Article" Src="/BLOG/Controls/Blog/Article.ascx" %>rn行 5: <%@ Register TagPrefix="MyBlog" TagName="Essay" Src="/BLOG/Controls/Blog/Essay.ascx" %>rn rnrn源文件: /Blog/article.aspx 行: 3 rn
一个古怪的问题?
我在同一个城市里,在某个网吧里登陆一个很普通的网站,非常容易,但是我换一个网吧,就完全登不上去,连地址都找不到,我还是头一次遇上这种情况,该网站是国内网站,以.com结尾的。我实在想不明白,是服务器问题还是机子,或者是网站本身有缺陷,请大虾帮我分析一下好吗?
存储过程的一个古怪的问题
下面是一个简单的存储过程rncreate proc usp_proc_testrn @procChar nvarchar(256),rn @wParameter smallintrnasrn print @procCharrngornrn把一个字符串绑定给了第一个参数,然后执行,结果发现存储过程不能正确得到这个字符串。如果我把存储过程的参数换位置,成为下面的样子rncreate proc usp_proc_testrn @wParameter smallint,rn @procChar nvarchar(256)rnasrn print @procCharrngorn存储过程就能正确接收到传递进取的字符串rnrn我的环境为sql2k+vc,使用odbc api的sqlbindparameter来绑定数据rn麻烦高手分析一下原因
一个古怪的问题。
请问:在纯dos下,有一块pci接口的视频压缩卡,但是这块卡没有dos下的驱动程序。rn能否自己编程(c或汇编)对该卡进行操作,实现视频压缩以及将压缩后的数据以.mpg文件的格式存储到磁盘上呢?如果可行,需要什么资料?
一个古怪的问题,求救!
" WIDTH="100" HEIGHT="100" BORDER="0" ALT="">在前台显示一个图片,我怎样判断<%# DataBinder.Eval(Container.DataItem, "picture")%>是不是空字符串,来决定显示与否?试用多种搞法,无奈,<%# %>这个东东里面不许用if或其它的东西,无法作出判断.求救.
一个古怪的问题!
T ***operator&()rn rn return &m_pArray;rn rn其中三个星号是什么意思!rnrn谢谢!!
一个古怪的报表问题!
我用reportbuilder作了一个报表:rndetail中的数据记录都是查询出来的,如何在报表中实现自动调整。rn实现的要求如下:rn 部门 姓名 年龄 rn 销售部 张三 26rn 销售部 李四 23rn .. .. ..rn因为部门是相同的,所以要把部门合并成一个,位置处于原来两个纪录的中间,如:rn 部门 姓名 年龄 rn 张三 26rn 销售部 rn 李四 23rn .. .. ..rnrn报表必须有网格线。希望各位大侠指点,有什么替代的方法也可,只要能打出一份这样的表就可以了。rnrn
一个颇古怪的问题
有一个ic卡的dll,在一般的桌面程序中调没什么问题。一摸一样的代码,封在一个组件函数里,再去调这个函数的话,会出错。rnrn奇怪吗
一个很古怪的问题
昨天在做一个SYBASE的数据库查询,结果发现一个让我崩溃的问题.rn在SYBASE客户端,写好了的查询语句,然后在那里验证,可以得到数据的情况下rn把语句COPY进C#那里,结果没有报错,可是得不出数据.rn然后把语句用那里的DATASET来做,也是有数据出来的,就是放入页面用程序来展现rn什么都不得rn有人碰到过这样的情况吗?数据读写用了ODBC,是不是.NET的ODBC做不了多表查询啊.是涉及到5个表的关联
请教一个古怪的问题
我用ASP+SQL SERVER 2005 在别人原来表的基础添加了一个列,然后输入了一些数据在数据库查询,可以找到相应结果rnrn。但是我用ASP调用的时候,出现了问题,说“列名XX无效”,查询语句没有问题,在数据库中已经通过测试,我是直rnrn接复制过来的。请问这是ASP的问题还是数据库的问题,应该如何解决。哪位高手知道,帮个忙先谢谢了。
一个小问题,class的值传递怎么回事。
protected HsCrmFunc PageFunc;rnrnHsCrmFunc是我定义的一个类,不是结构rnrnCommon.PageLvlRight(out PageFunc,"XT0101","/Admin/f/News.aspx")rnrn这是个静态方法然而PageFunc传入改变值却必须要用out,不然值就没有变。rnrn照里说PageFunc是值引用的,不用out也可以的,但是怎么去掉了out就为null了呢?
这是怎么回事,JB的问题?
小弟现用JB8开发,想做一个基类,此类其实是一个FRAME,只是我在上面加了一点button\label什么的(是程序中其他FRAME共有的,所以做这样一个类),然后小弟在生成其他FRAME时就先继承这个FRAME类,然后再往这个FRAME上加一点每个FRAME专有的控件,可是当我加完扣,编译,编译完另加上去的控件就不见了,一定要推动一下这另加上控件所在的PANEL才能再显现出来,可是一运行一编译又没了,不知道为何会这样,难道不能在继承的情况下另加控件?
这是怎么回事。session问题!
平台:linux,apache,php,mysqlrnrnsession登录!再关闭所有IE,打开同一页面。居然不要通过验证就能进入。问题是重启计算机后一样。这是怎么回事。关闭IE后session的生存周期应该结束了。rn 但当把临时文件夹内的Cookies文件删除后,就要通过验证才能进入。这到底是什么回事。rnrn不胜感激!rnrn
这是怎么回事(多线程问题)!
我用api CreateThread(,,Tfunc,,,);写了很小的线程程序rn函数定义成rnDWORD WINAPI Tfunc(LPVOID );rnrn可运行的时候老是说error C2664: 'CreateThread' : cannot convert parameter 6 from 'int *' to 'unsigned long *'rnrn还有我用mfc的AfxBeginThread()时,出现error LNK2001: unresolved external symbol __endthreadex。是不是头文件不对,可我是参照书上写的rnrnrnrn
这是怎么回事?ACCESS数据库的问题。
我用ACCESS建立了一个数据库,我把其中两张表里的数据清空了,但是数据库文件的大小为什么还是没变,还更以前一样?
数据库连接问题!这是怎么回事?
错误类型:rnMicrosoft OLE DB Provider for ODBC Drivers (0x80004005)rn[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x2a4 Thread 0x868 DBC 0x1258024 Jet'。rn/vote/conn.asp, 第 5 行rnrn<%rndim conn,dbrndb="vote.mdb"rnSet conn=Server.CreateObject("ADODB.Connection")rnconn.Open "DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER=Microsoft Access Driver (*.mdb)"rn%>
简单问题, 这是怎么回事?
代码如下:rnchar buf[1024];rnchar *pw=buf;rnchar *pr=Memo1->Text.c_str();rn//下面把Memo1中的文本过滤后写到buf中rn .rn .rn .rnMemo1->Text=buf;rn .rn .rn问题是执行了第三条语句后, pr所指的东西并不一定是Memo1中的文本,导致出错rn我发现如果Memo1中的文本为3个字符时就不正确, 文本多多时pr又正确rn我哪里错了?
初学者问题,这是怎么回事?
我在一个 Unit2中定义了个变量:extern String Str;rn在Unit3中调用,编译出现:rn Unresolved external '_Str' referenced from F:\UNIT3.OBJrnrn请问这是为什么?
float的问题,这是怎么回事?
下面这段VC示例代码:rnrn LONG lon = -42813533; // 如果这个数小一些,就不会发生下面的奇怪现象,但是它并没有超出什么范围啊。rn float flo = (float)lon;rn TRACE("\n%f", flo);rn TRACE("\n%f", flo);rn if(flo - (float)lon <= -0.5 || flo - (float)lon >= 0.5)rn TRACE("\n好奇怪的浮点数!");rnrn我仅仅是把一个长整数变量转换成浮点数并保存到一个浮点变量中,得到的输出却是:rnrn-42813533.000000rn-42813532.000000rn好奇怪的浮点数!rnrn我觉得很奇怪,各位帮我看看是怎么回事,我有点懵了。
非模态对话框的问题,这是怎么回事?
各位大神,我在创建非模态对话框的时候,为什么第二次打开会出现错误。rnrnvoid CWHView::OnDialog() rnrn // TODO: Add your command handler code herernrn Dlg.Create(IDD_DIALOG1,this);rn Dlg.ShowWindow(SW_SHOW);rnrnrnCTestDlg Dlg; 定义成全局变量;rnrnrnCWHView::~CWHView()rnrn Dlg.DestroyWindow(); 析构函数销毁对话框rnrn然后运行之后,第一次点开可以,但是第二次点开对话窗,就出现这个现象。rnrnDebug Assertion Failed!rnProgram:D:\MFC\WH\Debug\WH.exernFile: wicore.cpprnLine: 639rnrnFor information on how your program can cause an assertinrnfailure,see the Visual C++ documentation on asserts.rnrn(Press Retry to debug the application)rnrn但是我用new就不会出现这种情况。rnrnCTestDlg *pDlg=new CTestDlg();rnpDlg->Create(IDD_DIALOG1,this);rnPDlg->ShowWindow(SW_SHOW);
touber的问题?这是怎么回事?
在运行touber c 时,打开TC图标后弹出下面的对话框,是什么原因呢? rnrnTOUBER~1\TC.PIF rn程序文件名无效,请检测你的pif文件 rnrn是不是缺少pif文件,pif文件是什么?
关于strcat函数的一个问题!这是怎么回事?
#includern#includernchar a[10];rnchar b[10];rnchar c[10];rnstrcpy(a,"abc");rnstrcpy(b,"def");rnstrcpy(c,"ghi");rnprintf("%s\n%s\n",strcat(a,b),strcat(a,c));rnrn1,请问这个输出的结果为什么会是输出两次“abcghidef”?rnrnprintf("%s\n",strcat(a,b),strcat(a,c));rnrn2如果是这样就是输出一次“abcghidef”?
请问各位一个网络问题,这是怎么回事
请问各位,我用ip138查了一个我电脑的公网ip地址(171.118.114.16中国 山西省 太原市 联通),rn然后我又用花刺代理工具将电脑的ip改成了别的地方ip(111.251.111.127中国 台湾省 电信)(不是我本市的),rn然后我又在DOS窗口用ipconfig命令查了下我本机的ip(仍然是171.118.114.16中国 山西省 太原市 联通)rn现在请问各位,这是怎么回事?在我没有取消代理ip的情况下,无论我怎么刷新ip138的网页,它都是代理ip的地址rn但在dos窗口下用ipconfig命令查的话,它却显示的是我原来在没有设置代理ip时查的我本城市的公网ip地址,rn请问各位这是怎么回事?用花刺代理工具真的改变了本机的ip地址吗?还是假的改变了?各位解答下,谢谢!rnrn(尽量详细些)
这是怎么回事
#include rn#include rn#include rn#include rnrn/*rn * output:rn * accumulate()rn * operating on values 1,2,3,4rn * result with default addition: 10rn * result with plus function object: 10rn */rnrnint main()rnrn int ia[] = 1, 2, 3, 4 ;rn list ilist( ia, ia+4 );rn rn int ia_result = accumulate(&ia[0], &ia[4], 0); rn int ilist_res = accumulate(rn ilist.begin(), ilist.end(), 0, plus() );rnrn cout << "accumulate()\n\t"rn << "operating on values 1,2,3,4\n\t"rn << "result with default addition: " rn << ia_result << "\n\t"rn << "result with plus function object: " rn << ilist_res rn << endl;rn rn return 0;rn报错--------------------配置: mingw2.95 - CUI Release, 编译器类型: MinGW (Old)--------------------rnrn检查文件依赖性...rn正在编译 F:\81126962\appendix\alg0.C...rn[Error] F:\81126962\appendix\alg0.C:17: type\value mismatch at argument 2 in template parameter list for `template > list<_Tp,_Alloc>'rn[Error] F:\81126962\appendix\alg0.C:17: expected a type, got `allocator'rn[Error] F:\81126962\appendix\alg0.C:17: ANSI C++ forbids declaration `ilist' with no typern[Error] F:\81126962\appendix\alg0.C:17: initializer list being treated as compound expressionrn[Error] F:\81126962\appendix\alg0.C:17: initialization to `int' from `int *' lacks a castrn[Error] F:\81126962\appendix\alg0.C:21: request for member `begin' in `ilist', which is of non-aggregate type `int'rn[Error] F:\81126962\appendix\alg0.C:21: request for member `end' in `ilist', which is of non-aggregate type `int'rnrn构建中止 alg0: 7 个错误, 0 个警告rnrn
这是怎么回事?
我有三个窗体:form1,form2,form3.每个窗体上有一个按钮。我的流程是这样的: rn先显示form1.按下按钮后,显示form2同时关闭form1.按下form2的按钮,显示form3同时关闭form2.按下form3的按钮,显示form1同时关闭form1。不过所有的显示窗体语句都是如form.show 1这种模式。如此循环流程,反复达到第九次时,系统会死机! rn我想知道这是怎么回事?谢谢
这是怎么回事???
源码多,我弄个例子大家看看。rnrn[code=C#]using System;rnusing System.Collections.Generic;rnusing System.Text;rnrnnamespace Modelrnrn public class AccessBakrn rn public string name = "";rn public string addtime = "";rn public string size = "";rnrn rnrn[/code]rnrn[code=C#] List ff = new List();rnrn AccessBak ff1 = new AccessBak();rn ff1.name = "123123";rnrn AccessBak ff2 = new AccessBak();rn ff2.name = "123123";rnrn AccessBak ff3 = new AccessBak();rn ff3.name = "123123";rnrn AccessBak ff4 = new AccessBak();rn ff4.name = "123123";rnrn ff.Add(ff1);rn ff.Add(ff2);rn ff.Add(ff3);rn ff.Add(ff4);rnrn this.AccessList.DataSource = ff;rn this.AccessList.DataBind();[/code]rnrn出现错误:DataBinding:“Model.AccessBak”不包含名为“name”的属性。 rn
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制