游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2807|回复: 9

一个简单的C问题,但是总是出错,也不知道为什么?

[复制链接]

29

主题

97

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2005-9-21 21:15:00 | 显示全部楼层 |阅读模式
//一个简单的C问题,但是总是出错,也不知道为什么?
//我在头文件中声明了一个 char *pStr,确不能调有。下面是文件内容
//TEST.H
#include<iostream>
#include<conio.h>

namespace ST{
class test
       {
                public:
        test(void);
        ~test(void);
         char *pStr;
        };
}

//TEST.CPP
#include ".\test.h"
using namespace ST;
test::test(void)
{
}
test::~test(void)
{
}
void main()
{
        test *t=NULL;
        t->pStr= "adasfadsf";       
}

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-21 21:28:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

test *t=NULL;
t->pStr= "adasfadsf";  相当于0->pStr= "adasfadsf";  

另:这应是c++滴问题而不是c滴

29

主题

97

帖子

99

积分

注册会员

Rank: 2

积分
99
 楼主| 发表于 2005-9-21 21:34:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

我应该怎么做呢?谢谢大大

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-21 21:36:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

test *t= new test;
t->pStr= "adasfadsf";

1

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-9-22 06:42:00 | 显示全部楼层

Re: 一个简单的C问题,但是总是出错,也不知道为什么?

你声明的是一个类

类中成员默认是PRIVATE属性

当然不能被调用了


public:
    char *m_pStr;


就OK了

1

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-9-22 06:45:00 | 显示全部楼层

Re: 一个简单的C问题,但是总是出错,也不知道为什么?

还有

你声明的是一个*型实例

必须为他分配空间才行啊

你应该多看看C++基础方面的书

test *t=new test;
.
.
.

加油,小伙子

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2005-9-22 18:34:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?


上面明明有
class test
       {
                public:
test(void);
~test(void);
char *pStr;
        };

怎么会是私有的呢?明显是public的
只是没分配内存当然就非法了

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-22 18:39:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

加油,加油!

9

主题

198

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2005-9-22 19:05:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

"你声明的是一个类

类中成员默认是PRIVATE属性

当然不能被调用了"

这里的成员*pStr 已经在public后了,所以pStr已经是一个public成员,不存在上述所说的问题。问题就是作者没有初始化指针。

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2005-9-25 16:59:00 | 显示全部楼层

Re:一个简单的C问题,但是总是出错,也不知道为什么?

void main()
{
test *t=NULL;//应该改成 test * t = new t();
t->pStr= "adasfadsf"; //这个是大家共享一个字符串么?否则的话这样用只是复制了地址而已,没有复制字符串本身,如果用C++的话 还是用std::string好一点,效率差不了多少。
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 22:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表