求解 string 数组怎么做形参

Fire_Sky_Ho 2017-10-11 11:11:23
class Goods
{
protected:
string gname[N];
float price[N];
int No[N];//书名编号
public:
Goods(string *name,float *pr,int *No);
void showGoods();
~Goods();
};

string name[N] = {"《C程序设计语言(第2版·新版)》", "《C语言入门经典(第4版)》", "《中国高等院校计算机基础教育课程体系规划教材:(程序设计(第4版)》"};

Goods::Goods ( string *name, float *pr, int *No )
{
unsigned int i;
for ( i = 0; i < 3; i++ )
{
gname[i] = name[i];
price[i] = pr[i];
this->No[i] = No[i];
}


}

比如这个,只会执行一次循环,gname[1] 复制成功,后面2个就没了,直接被跳过
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-10-13
  • 打赏
  • 举报
回复
Goods::Goods ( string *name, float *pr, int *No )
{
unsigned int i;
for ( i = 0; i < 3; i++ )
{
    cout<<"helloworld!"<<endl;
    gname[i] = name[i];
    price[i] = pr[i];
    this->No[i] = No[i];
}
}
查看循环执行几次,不如在for循环里加一条打印,看看此条打印,输出几次。
  • 打赏
  • 举报
回复
这样是可以的,你的程序需要跟踪一下为什么不行。F9设置断点,F5运行到断点,F10单步,F11进入函数。

#include <iostream>
#include <string>

using namespace std;

int StringPoint(string *pStr, int iNum);

int main() {
	string strA[3] = { "abc", "bcd", "cde" };
	for(int i=0; i<3; i++) {
		cout << strA[i] << endl;;
	}

	StringPoint(strA, 3);
	return 0;
}

int StringPoint(string *pStr, int iNum) {
	int i;
	string gname[3];
	for(i=0; i<iNum; i++) {
		cout << pStr[i] << endl;
		gname[i] = pStr[i];
	}

	for (i = 0; i < iNum; i++) {
		cout << gname[i] << endl;
	}

	return i;
}
陪妳看星星 2017-10-13
  • 打赏
  • 举报
回复
代码不全,Goods::Goods ( string *name, float *pr, int *No ) 中的 pr 和 No都应该指向一个数组,是否正确赋值了?
ChildHood1949 2017-10-12
  • 打赏
  • 举报
回复
构造函数中最后打印一下看看内容? for ( i = 0; i < 3; i++ ) { cout<<gname[i]<<endl; }
paschen 版主 2017-10-12
  • 打赏
  • 举报
回复
你循环应该是会执行3次,单步跟踪程序运行来分析原因 此外,gname[1]并不表示第1个,gname[0]才是第1个
sdghchj 2017-10-12
  • 打赏
  • 举报
回复
数组名name直接作参数。 Goods(name,……);
Fire_Sky_Ho 2017-10-12
  • 打赏
  • 举报
回复
引用 1 楼 sdghchj 的回复:
数组名name直接作参数。 Goods(name,……);
看标题,答非所问

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧