我有一個包含變量(蘋果)的類。我如何配置類如此默認返回類型if(const char *),有什麼建議嗎?你如何在C++中返回一個類的默認類型
class myClass {
public char *apple;
}
int main()
{
myClass c;
printf("%s\r\n",c);
}
我有一個包含變量(蘋果)的類。我如何配置類如此默認返回類型if(const char *),有什麼建議嗎?你如何在C++中返回一個類的默認類型
class myClass {
public char *apple;
}
int main()
{
myClass c;
printf("%s\r\n",c);
}
我相信你可能想要用戶定義的轉換,這將需要你重載成員operator const char*
,例如,
operator const char *() const { return apple; }
然後,你可以這樣做:
myClass a;
const char *c = a; //c becomes a->apple
但問題是沒有確切的意圖非常明確。
噢,我喜歡這個,但是這絕對不是他所要求的...... – Nick
不是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());
}
一個更好的打印出你的課程的解決方案是:
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;
}
你是什麼人與返回類型?除此之外,我相信這不是有效的C++語法。 – tobspr
類沒有類似_default type_的東西。你是否意味着重載[type conversion operator](http://en.cppreference.com/w/cpp/language/cast_operator)? –
另一種選擇可能是使用流輸出並重寫'<<'運算符。 –