| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 889 人关注过本帖
标题:【求助】头晕啊!指针
只看楼主 加入收藏
TND
Rank: 1
等 级:新手上路
帖 子:29
专家分:2
注 册:2009-9-6
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:10 
【求助】头晕啊!指针
用指针数组表示姓名,地址,邮政编码。有很多问题,帮我改改,大虾!
#include<iostream>
#include<string>
using namespace std;
class person
{
private:
    string *p[3];
    static int m;
public:
    person(string *a);
    ~person();
    void setname(string *name);
    void show();
};
int person::m=1;
person::person(string *a)
{
    cout<<"creat ""<<m<<"" person!"<<endl;
    for(int i=0;i<3;i++)
    {
        p[i]=new string[strlen(a[i])+1];
        strcpy(p[i],a[i]);
    m++;
}
person::~person()
{
    cout<<"delete"<<m-1<<"person!"<<endl;
}
void person::setname(string name)
{
    p[0]=name;
}
void person::show()
{
    cout<<"姓名:"<<person.p[0]<<endl;
    cout<<"地址:"<<person.p[1]<<endl;
    cout<<"邮政编码:"<<person.p[2]<<endl;
}
void main()
{
    string *s[3]={"我我我","江西于都","10002'};
    person p1(s);
    p1.show();
    char name;
    cin>>name;
    setname(name);
    p1.show();
}


  
搜索更多相关主题的帖子: 头晕 指针 
2009-10-14 23:00
zodiac207
Rank: 2
等 级:论坛游民
帖 子:16
专家分:38
注 册:2009-10-14
收藏
得分:0 
int person::m=1
你这样直接给类成员赋值是不行的

只有用类声明了对象,才能对对象中的成员赋值的
2009-10-15 09:08
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
strlen,strcpy这些都是针对c-串的,既然用了string,那取长度就用length,赋值直接用=就可以了

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-15 10:33
guang142030
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-15
收藏
得分:0 
顶一下!
2009-10-15 17:56
TND
Rank: 1
等 级:新手上路
帖 子:29
专家分:2
注 册:2009-9-6
收藏
得分:0 
回复2楼
因为m是静态变量,这里没错啊!

优秀是一种习惯!
2009-10-15 21:00
TND
Rank: 1
等 级:新手上路
帖 子:29
专家分:2
注 册:2009-9-6
收藏
得分:0 
回复3楼
不怎么懂??
我把strlen改成length
strcpy改=
还是在那里报错!

优秀是一种习惯!
2009-10-15 21:05
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:0 
你在开始的时候定义string *p[3],相当于定义的是一个含有三个string类型的指针,而你在cout<<"姓名:"<<person.p[0]<<endl; cout<<"地址:"<<person.p[1]<<endl; cout<<"邮政编码:"<<person.p[2]<<endl,这三句里面就不能使用啊!出现的错误中有一条是不能强制转换类型。

Anything is possible!
2009-10-15 23:32
TND
Rank: 1
等 级:新手上路
帖 子:29
专家分:2
注 册:2009-9-6
收藏
得分:0 
回复7楼
对不起啊,我基础较差,还是不怎么懂?
能帮我把错误的改正过来,最好用红色标记

优秀是一种习惯!
2009-10-16 19:37
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:10 
回复 6楼 TND
#include<iostream>
#include<string>
using namespace std;
class person
{
private:
    string p[3];
    static int m;
public:
    person(string *a);
    ~person();
    void setname(string name);
    void show();
};
int person::m=1;
person::person(string *a)
{
    cout<<"creat ""<<m<<"" person!"<<endl;
    for(int i=0;i<3;i++)
    {
        p[i]=a[i];//new string[strlen(a[i])+1];
 //       strcpy(p[i],a[i]);
    }
       m++;
}
person::~person()
{
    cout<<"delete"<<m-1<<"person!"<<endl;
}
void person::setname(string name)
{
    p[0]=name;
}
void person::show()
{
    cout<<"姓名:"<<p[0]<<endl;
    cout<<"地址:"<<p[1]<<endl;
    cout<<"邮政编码:"<<p[2]<<endl;
}
int main()
{
    string s[3]={"我我我","江西于都","10002"};
    person p1(s);
    p1.show();
    string name;
    cin>>name;
    p1.setname(name);
    p1.show();
}



你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-17 00:00
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:0 
如果成员出现了指针变量,最好重载构造函数
2009-10-17 09:07
快速回复:【求助】头晕啊!指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032928 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved