如果我尝试使用iOS4 sdk版本的gcc编译以下内容.
它给了我错误:
请求从'const char [4]'转换为非标量类型'UsesStr'
class strptr {
public:
strptr(const char * s) : s_(s) {}
const char *c_str() const { return(s_); }
protected:
const char *s_;
};
class UsesStr {
public:
UsesStr(const strptr &sp)
: p_(sp.c_str())
{
}
const char *p_;
};
static UsesStr ustr = "xxx";
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子,它是一个问题,当strptr是一个字符串类而不是使用但错误是相同的.
根据下面的答案,我尝试了这似乎工作.希望有一个"通用"字符串arg,它将接受许多类型的字符串,因为它将转换放在构造函数中以分解所有转换,而不需要在仅使用一种类型的事物中完全声明所有可能的字符串类型.
class UsesStr;
class strptr {
public:
strptr(const char * s) : s_(s) {}
strptr(UsesStr &s);
const char *c_str() const { return(s_); }
operator const char *() const { return(s_); …Run Code Online (Sandbox Code Playgroud)