2016-05-02 79 views
-4

我有一個包含變量(蘋果)的類。我如何配置類如此默認返回類型if(const char *),有什麼建議嗎?你如何在C++中返回一個類的默認類型

class myClass { 
    public char *apple; 
} 

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

你是什麼人與返回類型?除此之外,我相信這不是有效的C++語法。 – tobspr

+1

類沒有類似_default type_的東西。你是否意味着重載[type conversion operator](http://en.cppreference.com/w/cpp/language/cast_operator)? –

+0

另一種選擇可能是使用流輸出並重寫'<<'運算符。 –

回答

0

我相信你可能想要用戶定義的轉換,這將需要你重載成員operator const char*,例如,

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

然後,你可以這樣做:

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

但問題是沒有確切的意圖非常明確。

+1

噢,我喜歡這個,但是這絕對不是他所要求的...... – Nick

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