2016-05-02 8 views
-4

私は変数(リンゴ)を含むクラスを持っています。どのように私はクラスを設定することができますので、デフォルトで戻り値の型(const char *)、任意の提案をしてください?どのようにC++でクラスのデフォルトの型を返すか

+0

返品の種類は何ですか?それ以外に、これは私が信じる有効なC++構文ではありません。 – tobspr

+1

クラスに_default type_のようなものはありません。 [型変換演算子](http://en.cppreference.com/w/cpp/language/cast_operator)のオーバーロードを意味しましたか? –

+0

もう1つのオプションは、ストリーム出力を使用し、 '<<'演算子をオーバーライドすることです。 –

答えて

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のように見えます。 :あなたは、これはchar *で行うことはできませんが、あなたはstd::stringを使用している場合、あなたはこのようにそれを行う可能性があります

:

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

使用「インライン」指定子を必要としますあなたのクラスをプリントアウトする

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; 
} 
関連する問題