2023年12月31日日曜日

cppでclassの配列を定義する場合、{}を二重で使う


cppでconstructorに引数が必要なclassの配列(array)を作る場合、[]と()の組み合わせではなく、{}を二重に使って定義します。
具体的には下記のように書きます。
class Book {
public:
std::string title;
Book(std::string title) : title(title) {}
};

Book books[]{{"hoi"}, {"fue"}};

[]と{}の間に=があっても同じです。
Book books[] = {{"hoi"}, {"fue"}};

配列の長さは定義後にsizeofを使って取得できます。
const size_t lenBooks = sizeof(books) / sizeof(Book);

{}を二重にする書き方が分からず戸惑う場面があるので記事に残します。

How do I declare an array with a custom class?
Array declaration

0 件のコメント :