nat*_*tli 4 c++ struct class object
制作新对象的常规方法:
std::string date1 = "10/1/2010"; Date d1(stringToChar(date1);
但我无法弄清楚如何在结构中使用它.结构:
struct RecPayments
{
std::string name;
Date datemake();
float cost;
};
Run Code Online (Sandbox Code Playgroud)
试着像这样使用它:
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;
}
Run Code Online (Sandbox Code Playgroud)
收到错误:
error: no matching function for call to ‘RecPayments::datemake(const char*)
这样做的正确方法是什么?
好吧,编译器是对的.你使用struct的方式给了你(实际上)一个类.您声明了一个函数RecPayments::datemake()
但从未在任何地方定义它.更重要的是,你甚至没有调用你创建的这个版本的函数 - 你发送了一个它没想到的参数.
您需要删除()
已声明的datemake变量,或者从中创建一个完整的函数.我不确定你想问哪一个.
()
你的大括号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;
}
Run Code Online (Sandbox Code Playgroud)
显然,当您使用时new
,您现在还需要delete
某个地方..或使用智能指针..