2016-11-09 12 views
0

Когда у меня есть класс и создаю один объект, его просто вызвать функцию-член. Это что-то вроде этого:C++ - функция-член и массив объектов

class Foo 
{ 
    ... 
public: 
    void function(); 
} 

void Foo::function() 
{ 
    ... 
} 

int main() 
{ 
    Foo f1; 
    f1.function(); 
} 

Но как я могу вызвать функцию-член, когда я собираюсь создать массив объектов?

class Foo 
{ 
    ... 
public: 
    void function(); 
} 

void Foo::function() 
{ 
    ... 
} 

int main() 
{ 
    Foo *f1; 
    ??? 
} 
+2

Где находится массив? 'f1' - это указатель, а не массив. – Barmar

+1

'f1-> function()', если это указатель на один объект, или 'f1 [index] .function()', если это указатель на массив объектов. – Barmar

+0

Ничего особенного, чем вы обычно делали. Просто скажите Foo * f1 = new Foo [15]; и назовите их методы. – SenselessCoder

ответ

0

Объект:

A a; 
a.foo() 

Указатель:

A *a; 
a->foo(); 

Table/"Array":

A a[10]; 
a[0].foo() 

Это действительно основы, имеющиеся в каждой свободной C++ курса.

+0

Да, спасибо, вот что я имел в виду. И что, если у меня есть указатель на указатель (A ** a) вместо простого указателя? –

+0

@ Rqw9Pl8gDm, вы де-ссылку еще раз. Я предлагаю вам вернуться к основам. Это материал, содержащийся в любой хорошей книге на C++. – StoryTeller

+0

например '(* a) -> foo()'. Но и другие способы в зависимости от ситуации. например 'А [0] [0] .foo()'. Вам действительно нужно сделать проклятие C++, прежде чем идти глубже. :) – woockashek

0

попробовать это

int main() 
{ 
    Foo arrayOfFoo[5]; 
    arrayOfFoo[0].function(); 
} 

Это создает 5 объектов типа Foo в массиве называется arrayOfFoo Затем он выполняет метод функцию() на объект с индексом массива 0 в массиве массивOfFoo.

0

Сначала вы должны создать массив объектов. Вы можете сделать это по заявлению Foo f1[100]; в main.

Я выбрал случайное число 100, вы можете выбрать любой. Кроме того, для доступа к функции-члену вам необходимо использовать оператор-точка. Напр.

f1[1].function() 

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

  • Нет связанных вопросов^_^