2014-10-03 4 views
0

Я понимаю, почему это не работает, поскольку подкласс не является прямой ссылкой, но что-то в этих строках с такой же теоретической функциональностью возможно ?.Вперед объявить массив подкласса

Это реализация я хотел бы использовать, если я мог бы переслать ссылку на массив подкласса:

class_declare.h:

class parentClass{ 
    int i; 
}childClass[100]; 

someSource0.cpp:

include "class_declare.h" 

//manipulate values of the array - but can this refer to one that is forward declared 
//and not a new object? 
void dosomething(){ 
    childclass[1]=10; 
} 

someSource1.cpp :

include "class_declare.h" 

void dosomethingelse(){ 
    std::cout<<childclass[1]; 
} 

Выход:

Спасибо !.

+1

Здесь нет подкласса. Существует массив из 100 'parentClass'es, и он называется« childClass ». Возможно, вам нужна [хорошая книга] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? – molbdnilo

+0

нет * forward declare *, но просто * declare *: 'extern parentClass childclass [100];' в заголовке и 'parentClass childclass [100];' в некотором файле cpp –

+0

Я понимаю, что я создал массив класса типа, независимо от неправильной маркировки массива, мне интересно, возможно ли это. – s33ds

ответ

0

Полиморфизм должен позволить вам создать список родительских объектов и заполнить его дочерними элементами.

class ParentClass{ 
    int i; 
}; 
ParentClass* ChildClass[100]; 

это объявление списка, который может содержать 100 экземпляров ParentClass или любого из его inheretors.

http://www.cplusplus.com/doc/tutorial/polymorphism/

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