【发布时间】:2019-12-21 23:44:04
【问题描述】:
演示代码
在文件 A 中:
class Queuetest{
...
queue<myclass>* mMyQueue = new queue<myclass>;
void addMyclass(myclass& myclassobject){
mMyQueue->push(myclassobject);
}
...
};
在文件 B 中:
...
Queuetest* mQueuetest = new Queuetest();
mQueuetest->addMyclass(new myclass(...));
...
所以编译告诉我:
对“myclass”类型的引用无法绑定到“myclass *”类型的右值
一些类似的案例给了我原因:
C++ 标准不允许将匿名临时绑定到引用,尽管一些编译器允许将其作为扩展。 (允许绑定到 const 引用。)
但是没有办法告诉我如何解决它;
我想使用队列来控制我的对象,并使对象像 FIFO 一样工作;添加新的,并弹出最后一个,自动释放该对象的内存;
有什么好办法吗?
【问题讨论】:
-
"addMyclass(myclass& myclassobject)" 想要获得引用,而 "mQueuetest->addMyclass(new myclass(...));"给出一个指向函数的指针。你应该决定你想要什么!如果你想用引用声明并有临时对象,那么你必须为 rvalue ref 添加一个接口来移动对象。
-
原样的代码不需要任何指针。你真的应该摆脱它们。
-
我敢打赌,您是一名 Java 程序员,出于习惯而试图将所有内容都放在一堆堆上。如果您想以正确的方式做事,请使用 Google 组合和完美转发。
-
@NathanOliver 那么有什么好方法可以实现我的目标吗?
标签: c++ class reference queue constants