2017-09-03 12 views

答えて

1

C++で変数がどのように動作するのか混乱しているようです。 GCCを使用してプログラムをコンパイルする

それは言う:

test.cpp: In function ‘int main()’: 
a.cpp:23:20: error: ‘email’ was not declared in this scope 
      cin >> email; 

emailという名前のそのような変数が存在しないことを意味します。 emailverifyクラスの中にその名前のメンバ変数を宣言しましたが、それはタイプemailverifyの変数を定義していて、それをしなかった場合にのみ使用されます。

今のところ、私はあなたがemailverifyクラスを取り除く示唆し、mainでローカル変数として直接必要な変数を宣言したい(あなたはグローバルとして宣言でき、あなたがローカルにそれらを続ければ良いです):

int main() 
{ 
    std::string test; 
    std::string email; 
    std::string at = "@"; 
    std::string period = "."; 

はその後、このような代わりemail.find(at) != std::string::nposemail.find(at != std::string::npos)として、他のエラーの束がありますが、あなたは最終的にそれらを取得します。

PS:私はstd::string at = "@";のようなコードを書いているようなプログラミング教師を知っていますが、IMHOはちょっとばかりです。 email.find("@")を書くことは完全に大丈夫です。余分な変数は何も買っていません。

+0

ありがとうございます!私は先生が私たちがそれを使うことを提案したので、クラスを使用しようとしました。 –

+0

@ A.j.Schenker:ああ、私はクラスがここでどのように役立つか見ることができません。しかし、あなたが試してみたいのであれば、そのクラスの変数 'int main(){emailverify e;'}を定義し、メンバー変数を 'e.test'、' e.email'などと呼ぶ必要があります。しかし、あなたが宣言したローカルの 'test'変数のうち、' e.test'とは異なるでしょう。 – rodrigo

0

あなたの問題は、コードの一部である:

class emailverify 
{ 
public:    // global variables/functions 
    std::string test; 
    std::string email; 
    std::string at = "@"; 
    std::string period = "."; 
}; 

それはグローバル変数や関数を定義していませんが、クラスを宣言します。定義されていないか、宣言されていないメイン関数に電子メール変数またはテスト変数はありません。

あなたはあなたができる事をグローバルに固執したい場合は型emailverifyのグローバルオブジェクトを作成し、.を経由して、そのメンバーを使用するか、またはそれらのすべてstaticとアクセス::emailverify::test)経由またはnamespaceclassを変更しますされるか、それクラス外でも定義する必要があります(Defining static members in C++)。

しかし、それらを地元の人として使用するだけで、今のところすべてを心配する必要はありません。

+0

私はそれをやろうとしましたが、グローバル変数を実装するには十分理解できません。 :/ありがとう! –

関連する問題