C++:class 的成员未被识别
C++ : Member of class not being recognised
我是 c++ 的新手(java 背景),我正在尝试访问我创建的 class 的成员,但在尝试调用时我不断收到错误消息class 的成员,表示该变量不是 class.
的成员
知道为什么会这样吗?我看过很多其他遇到此问题的人的例子,但其中 none 帮助我找出了原因
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。每当我尝试调用它时,它都说它不是成员,即使它是在 header class?
中定义的
main() 第 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
首先是一个最小的、完整的可验证示例,其中仅包含触发错误所需的代码:
#include <list>
using namespace std;
class Adressbuch
{
public:
list<int> Adressbuch::adress_buch;
};
int main()
{
Adressbuch buch;
buch.adress_buch.size();
return 0;
}
这就是找到问题所需的全部内容。没有其他障碍,因为分心问题 1 很容易被发现。我不是 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;
}
因为the notorious, bug-hiding using namespace std;
已被移除
我是 c++ 的新手(java 背景),我正在尝试访问我创建的 class 的成员,但在尝试调用时我不断收到错误消息class 的成员,表示该变量不是 class.
的成员知道为什么会这样吗?我看过很多其他遇到此问题的人的例子,但其中 none 帮助我找出了原因
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。每当我尝试调用它时,它都说它不是成员,即使它是在 header class?
中定义的main() 第 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
首先是一个最小的、完整的可验证示例,其中仅包含触发错误所需的代码:
#include <list>
using namespace std;
class Adressbuch
{
public:
list<int> Adressbuch::adress_buch;
};
int main()
{
Adressbuch buch;
buch.adress_buch.size();
return 0;
}
这就是找到问题所需的全部内容。没有其他障碍,因为分心问题 1 很容易被发现。我不是 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;
}
因为the notorious, bug-hiding using namespace std;
已被移除