我有一个包含变量(apple)的类。我如何配置类,所以默认情况下返回类型if(const char *),有什么建议吗?
class myClass {
public char *apple;
}
int main()
{
myClass c;
printf("%s\r\n",c);
}
答案 0 :(得分:3)
打印课程的更好的解决方案是:
class Apple {
public:
const char* apple;
};
ostream& operator<<(ostream& stream, const Apple& apple) {
return stream << apple.apple;
};
int main() {
Apple a;
a.apple = "Hello world";
cout << a << endl;
return 0;
}
答案 1 :(得分:0)
我相信您可能需要用户定义的转换,这需要您重载成员operator const char*
,例如
operator const char *() const { return apple; }
然后你可以这样做:
myClass a;
const char *c = a; //c becomes a->apple
但问题的确切意图并不十分明确。
答案 2 :(得分:0)
不是100%确定这是否是您要求的:
首先代码是错误的,看起来像Java
。在:
public
class myClass {
public:
myClass() : apple("Apple"){}
myClass(const char *apple) : apple(apple){}
// please note I changed it to be `const`,
// to avoid use of `strcpy()` or similar.
const char *apple;
}
int main() {
myClass c;
printf("%s\r\n", c.apple);
}
使用char *
无法做到这一点,但如果您使用的是std::string
,那么您可能会这样做:
class myClass {
public:
myClass(const char *apple) : apple(apple){}
// no need to be `const`...
std::string apple = "Apple";
}
int main() {
myClass c;
printf("%s\r\n", c.apple.c_str() );
}