C ++:不被认可的班级成员

时间:2016-11-06 21:24:40

标签: c++ class member

我对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  

1 个答案:

答案 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 () {
});

因为the notorious, bug-hiding using namespace std;已被删除