将Pointer对象传递给Methods

时间:2016-01-29 00:42:09

标签: c++ pointers

简而言之,我创建了一个银行对象。使用我的CreateBank()方法。

 Bank* Program::CreateBank()
    {

        //Creates a new Bank object.

        Bank *bank = new Bank();

        return bank;
    }

然后,当银行成功创建时,我基本上希望能够将其传递给任何其他方法 - 它的下一个位置应该是PopulateBank()方法,它将填充信息

    void Program::PopulateBank(Bank* bank)
    {
        bank->populate();
    }

但是,目前无法编译PopulateBank()方法。我有以下错误阻止我这样做:

  

"非静态成员必须与特定对象相关"

以下是我用于通话的代码:

    void Program::TestBankClass()
    {

        //Creates new bank Object.
        //Populates the bank object.
        //lists customers that were populated with all information.

        Bank* bank = CreateBank();

        PopulateBank(bank);

        ListAllCustomers(bank);

这是我的头文件:

class Program
    {

    public:

        static void AccountTester();
        static void TransactionTester();
        static void CreditAccountTester();
        static void TestCustomerClass();
        static void TestBankClass();

        void ListAllCustomers(Bank* bank);
        Bank* Program::CreateBank();
        void PopulateBank(Bank* bank);

    };

任何人都知道我做错了什么?或者可以给我一些提示?真的很感激!

1 个答案:

答案 0 :(得分:1)

Program::PopulateBank不是静态方法,因此您必须通过特定对象调用它。

Program prog;
Program.PopulateBank(bank);

Program *prog = new Program;
prog->PopulateBank(bank);

或者您可以将PopulateBank方法设为静态,但我不知道这是否与该类逻辑一致。这取决于此方法的作用,以及是否需要访问特定对象的成员变量。