如何在C++中为类返回默认类型

How do you in C++ of returning a default type for a class

本文关键字:返回 默认 类型 C++      更新时间:2023-10-16

我有一个包含变量(apple)的类。我如何配置该类,以便默认返回类型if(const char*),有什么建议吗?

class myClass {
   public char *apple;
}
int main()
{
   myClass c;
   printf("%srn",c);
}

打印类的一个更好的解决方案是:

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;
}

我相信您可能想要用户定义的转换,这将需要重载成员operator const char*,例如

operator const char *() const { return apple; }

然后你可以做:

myClass a;
const char *c = a; //c becomes a->apple

但这个问题的确切意图还不是很清楚。

不能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("%srn", 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("%srn", c.apple.c_str() );
}