2016-08-18 13 views
-1

名前は同じですが、クラスが異なる複数のオブジェクトを宣言できますか?それとも、これはすべてを混乱に投げ捨てるのだろうか?同じ名前の異なるクラスの複数のオブジェクトを宣言する

class get{ 
    public: 
     string info(){ 
      int str; cin >> str; 
      return str; 
     }; 
}; 
class store{ 
    public: 
     string data; 
} 

int main(){ 
    get foo; 
    store foo; 

    foo.data = foo.info(); 

    cout << foo.data; 

    return 0; 
} 

これは必ずしも私が使用しているコードではないことに注意してください。例だけです。もし私が精緻化する必要があれば教えてください。皆さんありがとう!

+4

これをコンパイルして調べることができます。あなたはそれが失敗するのを見るでしょう。なぜ同じ名前の複数の変数を使用したいのですか?あなたはどうやってそれらを区別するでしょうか? – NathanOliver

+0

自分で見る:http://melpon.org/wandbox/permlink/81EYDBUYIVqtlZEX – wasthishelpful

+0

@ NathanOliver組織的な目的のためだけに。また、私のコンパイラはフリッツの上にあり、私は新しいものを探しています。 – Creep2DJ

答えて

1

同じスコープ内に同じ名前の2つのオブジェクトを宣言することはできません。コンパイラはエラーを発行します。同じ名前を持つ2つのオブジェクトが異なるスコープで定義されており、修飾名が使用されているので、

は、しかし、たとえば、このコードは

#include <iostream> 
#include <string> 

class get 
{ 
public: 
    std::string info() const 
    { 
     std::string str; 
     std::cin >> str; 
     return str; 
    } 
}; 

class store 
{ 
public: 
    std::string data; 
}; 

store foo; 

int main() 
{ 
    get foo; 

    ::foo.data = foo.info(); 

    std::cout << ::foo.data << std::endl; 

    return 0; 
} 

有効です。

また、同じスコープ内のクラスの名前と同じ名前のオブジェクトを宣言することもできます。たとえば、

store store; 

この場合、オブジェクトの名前はクラスの名前を隠します。

+0

これは完璧です!本当にありがとう、これは間違いなく助けになるでしょう。 – Creep2DJ

+0

@ Creep2DJいいえ、まったくありません。どういたしまして。:) –

関連する問題