2013-05-03 54 views
-3

我有這個如何創建指針數組一個struct

struct Book{ 
    string id; 
    string title; 
    string author; 
}; 

,然後我要動態地創建指向該結構的數組。我已經試過這個,我得到分段錯誤。

Book *array[]= (Book*) malloc(sizeof(Book)); 

我想創建一個書籍列表(標識,標題,作者)。我應該嘗試創建一個結構數組嗎?

+1

C++?爲什麼不用'new'呢? – soon 2013-05-03 15:57:08

+0

我怎麼能這樣做與新?我嘗試了很多東西,但我得到的只是錯誤 – Tonia 2013-05-03 16:02:28

+3

顯示你已經嘗試過什麼。 – soon 2013-05-03 16:03:52

回答

4

不..

保持一個std::vector<Book>代替。


#include <string> 
#include <vector> 
#include <iostream> 

struct Book { 
    std::string id; 
    std::string title; 
    std::string author; 
}; 

int main() 
{ 
    Book b1 = { "0", "Title1", "Author1" }; 
    Book b2 = { "1", "Title2", "Author2" }; 

    std::vector<Book> books; 
    books.push_back(b1); 
    books.push_back(b2); 

    std::cout << books.at(0).title << std::endl; 
    // Expected output: "Title1" 
} 

Simple

+2

他想要一個指針數組......不是一個'Book'對象數組。但他可能是誤傳了他的意圖,所以+1無論如何 – 2013-05-03 16:06:21

+2

@CharlesSalvia它聽起來像一個XY問題,但。除非明確解釋需要指針,否則我會傾向於認爲這只是一個錯誤。 – juanchopanza 2013-05-03 16:10:40

+1

考慮到Tonia正在通過「什麼給我最少的錯誤」方法進行編程,我傾向於同意@juanchopanza。 – 2013-05-03 16:19:51

相關問題