2013-05-03 57 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