制作新对象的常规方法:std::string date1 = "10/1/2010"; Date d1(stringToChar(date1);
但是我不知道如何在结构中使用它。结构:
struct RecPayments
{
std::string name;
Date datemake();
float cost;
};
尝试像这样使用它:
void addRecurring()
{
//New recurring payment
RecPayments * newPaymentItem = new RecPayments;
//Set recurring payment properties
newPaymentItem->name = "Test Payment";
newPaymentItem->datemake(stringToChar("4/12/2011"));
newPaymentItem->cost = 5;
}
收到错误:
error: no matching function for call to ‘RecPayments::datemake(const char*)
这样做的正确方法是什么?
最佳答案
()
中的大括号Date datemake();
使编译器感到困惑。
只需删除它们。
如果要使用非默认c'tor在Date
中显式创建addRecurring()
对象,请使其成为指针并创建它。
struct RecPayments
{
std::string name;
Date* date;
float cost;
};
void addRecurring()
{
//New recurring payment
RecPayments * newPaymentItem = new RecPayments;
//Set recurring payment properties
newPaymentItem->name = "Test Payment";
newPaymentItem->date = new Date(stringToChar("4/12/2011"));
newPaymentItem->cost = 5;
}
显然,当您使用
new
时,您现在也需要在某个地方使用delete
..或使用智能指针。