制作新对象的常规方法:
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 ..或使用智能指针。

10-08 12:29