【发布时间】:2014-08-11 04:11:22
【问题描述】:
class Resource;
class Device
{
...
public:
Resource createResource();
bindResource(const Resource&);
};
int main()
{
Device dev;
Device oops;
auto res = dev.createResource();
dev.bindResource(res); // Okay; dev created this resource
oops.bindResource(res); // Error: oops did not create this resource
}
Program does not compile
这可以在编译时完全完成,没有运行时开销和类似的语法吗? 例如,设备是 Direct3D 渲染器的抽象;我们不能共享一些资源,如果我们尝试应该是编译时错误。
【问题讨论】:
-
不,编译器无法跟踪资源的使用位置,因此您必须在运行时进行。
标签: c++ resources compile-time ownership