怎么解决这种问题
#include<iostream>
using namespace std;
class String
{
private:
char* data;
int size;
public:
String(const char*);
~String() { delete []data; }
operator char* ()const;
operator int()const;
operator double()const;
};
String::String(const char* s)
{
size = strlen(s);
s = new char[size + 1];
strcpy_s(data, size + 1, s);
}
String::operator char* ()const
{
return data;
}
String::operator int()const
{
int n = 0;
for (int i = 0; i < size; i++)
{
if (data[i] < '0' || data[i]>'9')
{
cout << "#No int#" << endl;
exit(0);
}
else
{
n *= 10;
n += data[i] - '0';
}
}
return n;
}
String::operator double()const
{
int n = 0, p = 1, point = size;
for (int i = 0; i < size; i++)
{
if ((data[i] < '0' || data[i]>'9') && data[i] != '.')
{
cout << "#No double#" << endl;
exit(0);
}
if (data[i] == '.')
point = i;
if (i < point) //处理整数部分
{
n *= 10;
n += int(data[i] - '0');
}
if (i > point) //处理小数部分
{
p /= 10;
n += int(data[i] - '0') * p;
}
}
return n;
}
int main()
{
String sobj("hell");
char* svar = sobj;
cout << svar << endl;
String iobj = "2345";
int k;
k = int(String("456")) + 100; //把字符串转换成int数据
cout << "k=" << k << endl;
double w;
w = double(String("3.14")) * 2; //把字符串转换成double数据
cout << "w=" << w << endl;
}