【发布时间】:2015-08-19 21:28:08
【问题描述】:
我对 C++ 比较陌生,并且正在学习如何使用指针,但我遇到了一些让我对分配指针感到非常困惑的事情。我有类似于以下的代码:
DateTime^ dt;
...
while(true)
{
if(!dt)
{
//both of these work - compile and the loop will break after a minute
//dt = DateTime::Now;
dt = %DateTime::Now;
}
else if ((DateTime::Now - *dt).TotalMilliseconds > 60000)
{
break;
}
}
为什么这两种方法都有效?据我了解,dt = %DateTime::Now 将dt 指针设置为DateTime::Now 返回的对象的引用,这对我来说是这样。但是在dt = DateTime::Now 中发生了什么,因为如果DateTime::Now 确实返回了一个对象,那么它不应该给我一个无法将DateTime 转换为DateTime^ 的错误吗?似乎为了让第二个工作,DateTime::Now 需要返回由DateTime::Now 创建的DateTime 对象的引用,在这种情况下,第一个dt = %DateTime::Now 不应该给出类似的错误 cannot将DateTime^^ 转换为DateTime^ 还是智能指针与普通指针的工作方式不同?
【问题讨论】:
-
语言错误。不是 C++。
-
类型后面的
^和“指针”前面的%是什么???你确定你在学习 C++? :) -
这是带有托管扩展的 C++。这是您使用 C++ 编写 .NET 代码的方式。
-
@Darryl 所以,它不是 C++。或许你能帮忙找到合适的标签?
标签: datetime pointers c++-cli memory-address managed