C++中,私有成员为指向字符串的指针数组!公有函数在调用时出错。

来源:百度知道 编辑:UC知道 时间:2024/07/04 02:59:12
各位高手帮忙,我用C++编程,类中的私有数据成员为指向字符串的指针数组:char * word[10]
公有函数有两个,一个是构造函数,我用它使私有成员的十个指针,指向了十个单词,另一个函数就是要输出这十个单词,没有错误和警告,但输不出
#include<iostream>
#include<cstring>
using namespace std;
class word
{
public:
word();
void lookup();
private:
char * words[10];
};
word::word()
{

int i;
char w[10][100];
for(i=0;i<=9;i++)
{

cin>>w[i];
words[i]=w[i];

}

}
void word::lookup()
{
int i;
for(i=0;i<=9;i++)
cout<<words[i]<<endl;

}
void main()
{
word w1;
w1.lookup();
}
各位 大哥 这就是是小弟的源代码 用lookup函数输不出
我用的是vc++
我尝试过 如果我在构造函数中同样写入lookup中的输出代码 就可以实现
小弟郁闷了一天了 希望大哥们帮帮忙

不应该。
你的代码呢?
==========================================
错误是你的words是一个字符指针数组,里面存的是指针,而你接收到的字符串存在w中,这个w是一个局部变量,超出本函数就失效了。所以,words里面的10个字符指针都是垃圾值了。这就是你放在构造函数可以正确输出的原因。

我修改为w也是类的成员变量,这样就可以了。不过你的words也没有什么存在的必要了。

#include<iostream>
#include<cstring>
using namespace std;
class word
{
public:
word();
void lookup();
private:
char *words[10];
char w[10][100];
};

word::word()
{

int i;
cout<<"please input data:"<<endl;
for(i=0;i<=9;i++)
{
cin>>w[i];
words[i]=w[i];
}

}
void word::lookup()
{
int i;
cout<<endl<<"output data:"<<endl;
for(i=0;i<=9;i++)
cout<<words[i]<<endl;

}

void main()
{