2016-01-29 3 views
0

Короче говоря, я создал объект банка. Используя мой метод CreateBank().Передача объектов указателя в методы

Bank* Program::CreateBank() 
    { 

     //Creates a new Bank object. 

     Bank *bank = new Bank(); 

     return bank; 
    } 

Затем, когда банк был успешно создан, в основном я хочу, чтобы иметь возможность передать его любым другим способом - Это следующий место должно быть PopulateBank() метод, который будет заполнить его информацией.

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

Однако метод PopulateBank() в настоящее время не может быть собран. Я следующее сообщение об ошибке мешает мне делать так:

«нестатический Ference члена должен быть по отношению к конкретному объекту»

Вот код, я использую для моих звонков:

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

Похоже, что ваш метод «populate()» помечен как «статический». Удалите «статический» классификатор. (Или, может быть, вам не хватает «статического» квалификатора на «PopulateBank», «TestBankClass» или одна из этих функций?) Трудно сказать без более полной копии вашего кода. –

+0

@MichaelAaronSafyan, Вы можете вызвать статические функции-члены, используя объект класса. – chris

+0

@chris, правда, но некоторые уровни предупреждений/ошибок будут препятствовать этому. –

ответ

1

Program::PopulateBank не является статическим методом, поэтому вам нужно вызвать его через определенный объект.

Program prog; 
Program.PopulateBank(bank); 

или

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

Или вы могли бы сделать метод PopulateBank статичны, но я не знаю, если это будет соответствовать логике класса. Это зависит от того, что делает этот метод, и нужен ли ему доступ к переменным-членам определенного объекта.

+0

Как вызов этого способа делает его компилируемым? – Beta

+0

А, это имеет смысл, я сделал все статичным, так как мне не нужно больше одного программного объекта, программа теперь компилируется, спасибо! – Mitch89

+0

Если вы сделаете все статичным, это означает, что это по существу одноэлементный класс, у вас не может быть более одной Программы. – Barmar

Смежные вопросы