C ++ Visual Studio"非标准语法;使用'&'创建指向成员的指针"

时间:2017-10-20 08:52:57

标签: c++ visual-studio

我遇到了这个错误(错误C3867:非标准语法;使用'&'创建指向成员的指针)几次。我知道很多次都会问过这个问题,但我不明白为什么会出现这个问题以及我能做些什么来解决它。我已经阅读了很多关于指针如何工作的指南,并且我试图使用新知识,但我不知道如何正确地做到这一点。

对于这个问题,我做了一个简单的代码。有人可以帮助我理解为什么会出现此错误以及如何修复此代码吗?

错误:错误C3867:' BankAccount :: amountOfMoney':非标准语法;使用'&'创建指向成员的指针

Source.cpp

#include <iostream>
#include <string>

#include "BankAccount.h"

using namespace std;

int main(){

    BankAccount bankAccount1("testName", 200.0);

    cout << bankAccount1.amountOfMoney << endl;

}

BankAccount.h

#pragma once
#include <string>

using namespace std;

class BankAccount
{
public:
    BankAccount();
    BankAccount(string name, double money);
    ~BankAccount();
    double amountOfMoney();

private:
    string name;
    double money;
};

BankAccount.cpp

#include "BankAccount.h"


BankAccount::BankAccount()
{
}

BankAccount::BankAccount(string n, double m) {
    name = n;
}

BankAccount::~BankAccount()
{
}

double BankAccount::amountOfMoney() {
    return money;
}

2 个答案:

答案 0 :(得分:4)

您忘记了函数调用运算符()。将您的main代码更改为:

int main(){

    BankAccount bankAccount1("testName", 200.0);

    cout << bankAccount1.amountOfMoney() << endl;

}

没有括号,它会尝试打印成员函数的地址,除非该函数不是类的成员,否则它无法执行。

答案 1 :(得分:0)

如果要调用您的成员函数,请使用括号。:

cout << bankAccount1.amountOfMoney() << endl;