我有一个PHP方法,检查传入的参数是否是一个日期.这是它:
public function is_Date($str){
if (is_numeric($str) || preg_match('^[0-9]^', $str)){
$stamp = strtotime($str);
$month = date( 'm', $stamp );
$day = date( 'd', $stamp );
$year = date( 'Y', $stamp );
return checkdate($month, $day, $year);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
然后,我测试开它像这样:
$var = "100%";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1970";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/2005";
if(is_Date($var)){
echo $var.' '.'is a date';
}
$var = "31/03/1985";
if(is_Date($var)){
echo $var.' '.'is a date';
}
Run Code Online (Sandbox Code Playgroud)
请注意,每个ifs还有一个else语句,如: …
我一直在尝试测试对我的结构的赋值运算符=的调用:
struct array{
void* data;
template<typename S, typename T>
array& operator= (const map<S, T>& that){ cout << "worked..."; return *this;}
private:
array(); //i don't need this
};
Run Code Online (Sandbox Code Playgroud)
我像这样试驾:
map<int, string> var;
array arr = var;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error: conversion from
'std::map<int, string, std::less<int>, std::allocator<std::pair<const int, string> > >'
to non-scalar type 'array' requested*/
Run Code Online (Sandbox Code Playgroud)
问题:到底是什么问题?如何使这样的运算符超载?我的意思是
operator=
,它应该将不同类型的对象转换为自己的类类型。