你如何在C ++中返回一个类的默认类型

时间:2016-05-02 16:15:51

标签: c++

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

class myClass {
   public char *apple;
}

int main()
{
   myClass c;
   printf("%s\r\n",c);
}

3 个答案:

答案 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);
}

使用&#34;内联&#34;符

使用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() );
}