[英]c++ - set object to array of pointers to the class of the object
我有一個類名 MyDate 具有以下成員和方法:
class MyDate
{
public:
MyDate();
void setDay(int d);
void setMonth(int m);
void setYear(int y);
void set(int day_, int month_, int year_);
void print ();
private:
int day;
int month;
int year;
};
我有另一個類名 Calendar,它有一個指向 MyDate 的指針數組。
class Calendar
{
public:
Calendar() ;
void setDate (int num);
bool isFree(int num_);
int firstFree();
void insertDate(MyDate my_date_);
void print ();
private:
std::array<MyDate*, 30> m_dates;
};
我通過以下方式實現插入功能:
void Calendar :: insertDate(MyDate my_date)
{
int f = firstFree()-1 ;//the first free index in the array
*m_dates[f]=my_date; //is there a way to implement it without getters from //MyDate class??
}
我知道我不能做*m_dates[f]=my_date;
---> 只是為了解釋我必須實現的內容。 有沒有辦法在沒有 MyDate 類的 getter 的情況下實現它?
你不能使用*m_dates[f]=my_date;
因為數組只有指針,所以你仍然需要為實際的對象提供存儲空間。 如果您可以並且想要使用智能指針數組( std::array<std::shared_ptr<MyDate>, 30> m_dates;
),您可以使用m_dates[f].reset(new MyDate(my_date));
,否則你必須照顧內存管理。
首先,您的數組保持指向 mydate 對象的指針,您必須正確管理數據。 如果我查看用於 insertDate 的接口,insertDate(myDate *my_date) 就很清楚了,您可以簡單地使用 m_dates[f]=my_date 將值設置為數組。 如果您打算保留指針,您可能必須確保在程序和 myData 對象期間設置有效的指針得到正確管理。 正如在 C++11 中的一條評論中提到的,您可以利用 shared_pointers 這樣您就不必顯式管理內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.