+ -
当前位置:首页 → 问答吧 → 类可以通过重载实现类型的自动转换,可类的指针怎么办?

类可以通过重载实现类型的自动转换,可类的指针怎么办?

时间:2011-12-07

来源:互联网

C/C++ code

class Woo{
private:
    char mm;
public:
    Woo(char a){mm = a;}
    Woo() {mm=0;};
};

void main()
{
    Woo a;
    a = 'u'; // 正常
    
    Woo b[10];
    ::strcpy(b, "oopp"); // 这里b怎么自动转换为char *呢?
}

作者: hyslam   发布时间: 2011-12-07

重载 char *操作符
#include <iostream>

using namespace std;

class Woo{
private:
  char mm;
char *str;
int iflag;// 0 -- mm;1--str;
public:
  Woo(char a){ cout<<"ok"<<endl;mm = a; iflag = 0;str = NULL;}
Woo(char * a)

cout<<"ok1"<<a<<endl; 
if ( a )
{
str = new char[strlen(a) + 1];
strcpy(str,a);
iflag = 1;
}
else
str = NULL;
}
  Woo() {mm=0; iflag = 0;str = NULL;};
Woo &operator=(Woo &w)
{
if ( &w != this && iflag ==0)
{
mm = w.mm;
}
else if( &w != this && iflag ==1 )
{
if ( str )
delete []str;
str = new char[strlen(w.str) + 1]; 
strcpy(str,w.str);

}
return *this;
}
operator char *() const
{
return str;
}
~Woo() {if ( str ) delete [] str;}

};

void main()
{
  Woo a;
  a = Woo('u'); // 正常

Woo b("");
b = Woo("ppppppppppp");

// Woo b[10];
  ::strcpy(b, "oopp"); // 这里b怎么自动转换为char *呢?
}

作者: gameslq   发布时间: 2011-12-07

我想问的是不在Woo类里new的情况下,怎么实现

Woo里面只有1个字节char的元素,目的只是代替char自动初始化为'\0'

也是变象的自动初始化char,但这个类却不能转成char *...

作者: hyslam   发布时间: 2011-12-08

热门下载

更多