我在一個類的C++前向聲明中發現錯誤,錯誤地聲明爲struct Book
而不是class Book
。我認爲Book曾經是一個結構體,變成了一個類,但是前面的聲明仍然存在。作爲結構體對類的前向聲明
Book.h:
class Book {
...
};
Library.h:
struct Book;
class Library {
std::vector<Book*> books;
};
有沒有編譯器警告和生成的程序似乎正常工作。它讓我感到好奇:理論上,這會造成問題嗎?這只是一個指針,是的,但例如,如果該類有虛擬方法,多重繼承,指針可能會不同?
我知道關於默認public/private的類/結構體之間的差異,但我特別提出了前向聲明和交換它們的可能後果。
這不是C++中的錯誤,但是VS可能給你一些悲痛。 – juanchopanza
@Danh編輯的問題來解釋區別。 –
相似問題:http://stackoverflow.com/questions/4866425/mixing-class-and-struct –