我对c ++(java背景)相当陌生,我试图访问我创建的类的成员,但在尝试调用类的成员时,我一直收到错误消息,它是&#39 ; s说该变量不是该类的成员。
为什么会发生这种情况?我已经看过很多其他有这个问题的人的例子,但没有一个能帮助我找出原因
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()
第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
答案 0 :(得分:0)
首先是一个最小的,完整的可验证示例,它只包含触发错误所需的代码:
list<int> Adressbuch::adress_buch;
找到问题所需要的只是一点点。没有别的东西作为分心问题1很容易被发现。我不是Visual Studio编译器中的大师,我没有可用的,但我敢打赌警告或错误中的某处是这一行:
adress_buch
#include <list>
using namespace std;
class Adressbuch
{
public:
list<int> adress_buch;
};
int main()
{
Adressbuch buch;
buch.adress_buch.size();
return 0;
}
未正确定义会导致各种未来问题。编译这个例子,GCC给出:
错误:会员'adress_buch'上的额外资格'Adressbuch ::'
更正后的例子是
#include <list>
class Adressbuch
{
public:
std::list<int> adress_buch;
};
int main()
{
Adressbuch buch;
buch.adress_buch.size();
return 0;
}
或更好
/*****************************************************************************/
/* AccountSettings: Event Handlers */
/*****************************************************************************/
Template.AccountSettings.events({
});
/*****************************************************************************/
/* AccountSettings: Helpers */
/*****************************************************************************/
Template.AccountSettings.helpers({
'fetchTemplate': function(){
var myui = "Tab";
return myui;
},
'tl': function () {
var g = Session.get('shouldRender');
return g;
}
});
/*****************************************************************************/
/* AccountSettings: Lifecycle Hooks */
/*****************************************************************************/
Template.AccountSettings.onCreated(function () {
});
Template.AccountSettings.onRendered(function () {
Session.set('shouldRender',false);
setTimeout(function () {
Session.set('shouldRender',true);
}, 5000);
var g = Session.get('shouldRender');
});
Template.AccountSettings.onDestroyed(function () {
});