注册 登录
编程论坛 C++教室

构造函数里含指针的问题

yangdh08 发布于 2008-03-10 13:10, 1584 次点击
写了个类,不知哪错了:
#ifndef _CSTR_H
#define _CSTR_H
class CStr
{
public:
    CStr(char *str = NULL);
    ~CStr();
protected:
private:
    char *m_str;
};
#endif;
16 回复
#2
sunkaidong2008-03-10 13:14
错误信息呢?
#3
yangdh082008-03-10 13:14
错误:
error C2065: 'NULL' : undeclared identifier
error C2440: 'default argument' : cannot convert from 'int' to 'char *'
unable to recover from previous error(s);
#4
yangdh082008-03-10 13:15
能给我说说类里定义指针成员数据该怎么用吗?
还有如果类里含指针成员数据,构造函数该怎么给它初始化。。
#5
yangdh082008-03-10 13:19
我是这样写的:
CStr::CStr(char *str /* = NULL */)
{
    m_str = str;
}
#6
sunkaidong2008-03-10 13:26
你可以用string类
#7
yangdh082008-03-10 13:28
晕。。就是想了解下类里指针的用法
谢谢
fdghdfghdghgdh
#8
sunkaidong2008-03-10 13:35
#include"iostream.h"
#ifndef _CSTR_H
#define _CSTR_H

class CStr
{
public:
    CStr(char *str);
    ~CStr();
protected:
private:
    char *m_str;
};

CStr::CStr(char *str)//这里可以用char *str=NULL
{
    m_str=str;
}
CStr::~CStr()
{
    cout<<m_str<<endl;
}
#endif
main()
{   char s[]={"aasdsdfdsf"};
    CStr *c1;
    c1=new CStr(s);
    delete c1;

}
有的时候语法没问题但是编译器不一定通过......

[[it] 本帖最后由 sunkaidong 于 2008-3-10 13:41 编辑 [/it]]
#9
yangdh082008-03-10 13:40
谢谢。。我试试
还有个疑问:
CStr(char *str);
这个构造函数,如果我定义个对象比如CStr cstr;
这样就出问题了:no appropriate default constructor available
#10
sunkaidong2008-03-10 13:42
提示你没有默认的构造函数可以用..这个涉及拷贝构造函数问题...
#11
yangdh082008-03-10 13:46
哦。。你有没qq加,我再研究研究
别人笑我忒疯癫,我笑别人看不穿;不见五陵豪杰墓,无花无酒锄作田。
#12
sunkaidong2008-03-10 14:11
#include"iostream.h"
#ifndef _CSTR_H
#define _CSTR_H

class CStr
{
public:
    CStr(char *str);
    CStr(CStr& c2 );
    ~CStr();
protected:
private:
    char *m_str;
};

CStr::CStr(char *str=NULL)
{
    m_str=str;
}

CStr::CStr(CStr& c2 )
{
  m_str=c2.m_str;
}

CStr::~CStr()
{
    cout<<m_str<<endl;
}
#endif
main()
{   char s[]={"aasdsdfdsf"};
    CStr *c1;
    c1=new CStr(s);
    CStr c2(*c1);
    delete c1;

}
这个很完整了....
#13
sunkaidong2008-03-10 16:22
上面一个程序有一个要小心....(char *str=NULL)
一旦这样实例CStr c会报错得....函数会报错..因为不知道哪个是入口
#14
yangdh082008-03-10 16:31
哦,难怪
了解了。。
#15
sunkaidong2008-03-10 16:35
多讨论啊..对大家都好啊..呵呵..给你加油....
#16
yangdh082008-03-10 16:42
你qq多少,加加,有问题讨论讨论呀
我qq:7185664
#17
leeco2008-03-10 19:22
error C2065: 'NULL' : undeclared identifier
不是写的很清楚了嘛。你没有包含任何定义了NULL的头文件。
1