C++:类未被识别的成员
问题描述:
我对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。任何时候我尝试调用它,它说它不是一个成员,即使它是在头文件类中定义的?在main()的
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
答
首先最小的,完全可验证例如第19行,它包含什么,但引发的错误所需要的代码
错误消息:
#include <list>
using namespace std;
class Adressbuch
{
public:
list<int> Adressbuch::adress_buch;
};
int main()
{
Adressbuch buch;
buch.adress_buch.size();
return 0;
}
这就是所有的需要,多一点,找到问题。没有别的方式,因为分心问题很容易被发现。我在Visual Studio编译器没有大师,我没有一个可用的,但我打赌某处警告或错误是这一行:
list<int> Adressbuch::adress_buch;
adress_buch
被定义不正确造成种种的未来的问题。编译这个例子中,GCC给出:
error: extra qualification 'Adressbuch::' on member 'adress_buch'
一个修正的例子是
#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;
}
+0
感谢这个例子,将来会使用这种做法,同时加入std :: cast似乎可以修复我的错误 – NoName
你需要'的#include“KONTAKT .h“在标题中。 –
对不起,我在我的实际代码中,只是忘了把它放在这里的主代码部分 – NoName
你需要学习一些基本的C++。 – juanchopanza