Znalazłem błąd w deklaracji forward C++ klasy, która została błędnie zadeklarowana jako struct Book
zamiast class Book
. Myślę, że Book był strukturą, został zmieniony na klasę, ale deklaracje dotyczące przyszłości pozostały.Deklaracja przekazywania jako struktura kontra klasa
Book.h:
class Book {
...
};
Library.h:
struct Book;
class Library {
std::vector<Book*> books;
};
Nie było żadnych ostrzeżeń kompilatora i wynikający Program wydawał się działać prawidłowo. Zastanawiało mnie to: w teorii, czy może to kiedykolwiek spowodować problem? To tylko wskaźnik, tak, ale na przykład, jeśli klasa miała wirtualne metody, wielokrotne dziedziczenie, czy wskaźniki mogły być inne?
Znam różnice między klasą/strukturą dotyczące domyślnych publicznych/prywatnych, ale ja pytam konkretnie o deklaracje terminowe i możliwe konsekwencje ich zamiany.
To nie jest błąd w C++, ale VS może dać ci trochę żal. – juanchopanza
@Danh edytowane pytanie, aby wyjaśnić różnicę. –
Podobne pytanie: http://stackoverflow.com/questions/4866425/mixing-class-and-struct –