2016-11-06 2 views
-3

私はかなり新しいC++(Javaの背景)ですが、私が作成したクラスのメンバーにアクセスしようとしていますが、メンバーを呼び出そうとするとエラーメッセージが表示され続けます。変数はクラスのメンバーではないと言っています。C++:クラスのメンバーが認識されない

これは何が起こっているのですか?私はこの問題を持つ人々のように多くの他の例を見てきましたが、それらのどれも私がなぜ

MAIN.CPP

#include "stdafx.h" 
#include "Adressbuch.h" 
#include "Kontakt.h" 
#include <iostream> 
#include <sstream> 

using namespace std; 

Adressbuch hinzufügen(Adressbuch buch); 
Adressbuch löschen(Adressbuch buch); 
void auflisten(Adressbuch buch); 

int main() 
{ 
bool end = true; 
Adressbuch buch; 
while (end) { 
    cout << "Bitte geben sie ein Aktion ein: (hinzufügen(h)/löschen(l)/beenden(b)/auflisten(a))" 
     << endl << "zur Zeit gibt es " << buch.adress_buch.size() << " Kontakte" << endl; 
    if (cin >> "h") buch = hinzufügen(buch); 
    else if (cin >> "l") buch = löschen(buch); 
    else if (cin >> "a") auflisten(buch); 
    else if (cin >> "b") end = true; 
    else cout << "Error. Ungultig Eingabe." << endl; 
} 
return 0; 

Adressbuch.h

#include "Kontakt.h" 
#include <list> 

class Adressbuch{ 
public: 
Adressbuch(); 
~Adressbuch(); 
void hinzufügen(Kontakt k); 
void löschen(Kontakt k); 

list<Kontakt> Adressbuch::adress_buch; 
}; 
を見つける助けていません

Adressbuch.cpp

#include "Adressbuch.h" 
#include "Kontakt.h" 
#include <list> 
using namespace std; 

Adressbuch::Adressbuch(){ 
adress_buch; 
} 

Adressbuch::~Adressbuch(){ 
} 

void Adressbuch::hinzufügen(Kontakt k){ 
adress_buch.push_back(k); 
} 

void Adressbuch::löschen(Kontakt k) { 
adress_buch.remove(k); 
} 

私が問題を抱えているメンバーは、リストadress_buchです。私はそれを呼び出すときはいつでも、ヘッダクラスで定義されていてもメンバーではないと言います。必要なのはそのすべてだ

#include <list> 
using namespace std; 

class Adressbuch 
{ 
public: 
    list<int> Adressbuch::adress_buch; 
}; 
int main() 
{ 
    Adressbuch buch; 

    buch.adress_buch.size(); 
    return 0; 
} 

:エラーをトリガするために必要なコードだけを含んでいない第一に、最小限の、完全な検証例メインのライン19上の

エラーメッセージ()

Severity Code Description Project File Line Suppression State 
Error C2039 'adress_buch': is not a member of 'Adressbuch' 
ConsoleApplication5 c:\users\gregs\documents\visual studio 
2015\projects\consoleapplication5\consoleapplication5\consoleapplication5.cpp  19 
+1

を削除されているので

#include <list> using namespace std; class Adressbuch { public: list<int> adress_buch; }; int main() { Adressbuch buch; buch.adress_buch.size(); return 0; } 

またはそれ以上

#include <list> class Adressbuch { public: std::list<int> adress_buch; }; int main() { Adressbuch buch; buch.adress_buch.size(); return 0; } 

です.h "をヘッダーに入れてください。 –

+0

申し訳ありませんが、私は実際のコードで行っていましたが、ここのメインコード部分に入れておきました。 – NoName

+0

そして基本的なC++を学ぶ必要があります。 – juanchopanza

答えて

0

、問題を見つけるために、少し以上。気を散らす問題として、他に何も出てこないのは簡単です。私は、Visual Studioのコンパイラには第一人者だんと私は可能なものを持っていませんが、私はどこかに警告やエラーにこの行されていることを賭けている:

list<int> Adressbuch::adress_buch; 

adress_buchが不適切のすべての種類を引き起こして定義されています将来の問題。この例のコンパイル、GCCが与える:

error: extra qualification 'Adressbuch::' on member 'adress_buch'

をAに例を修正あなたは `の#include「お問い合わせ先に必要the notorious, bug-hiding using namespace std;

+0

例のおかげで、この練習を将来的に使用し、std :: castを追加するとエラーが修正されたようです – NoName

関連する問題