小编Mar*_* B.的帖子

函数返回右值引用有意义吗?

这样的签名有效的用例是什么?:

T&& foo();
Run Code Online (Sandbox Code Playgroud)

还是右值引用仅打算用作参数?

如何使用这样的功能?

T&& t = foo(); // is this a thing? And when would t get destructed?
Run Code Online (Sandbox Code Playgroud)

c++

26
推荐指数
3
解决办法
1255
查看次数

成员函数签名末尾的&(&符号)是什么意思?

我不记得是哪一次谈话,但最近我看了一些来自CppCon 2017的演讲,并且有人提到了某种旁注,唯一真正的重载方式是以operator=下列方式:

class test {
public:
    test& operator=(const test&) &;
};
Run Code Online (Sandbox Code Playgroud)

他明确强调了尾随&但没有说明它做了什么.

那它是做什么的?

c++ c++11

7
推荐指数
2
解决办法
742
查看次数

成员变量的新放置

我有一个具有 GUI 成员变量的类。我必须在构建时提供文本、字体和大小。不幸的是,所属类的构造函数无法获取提供的数据,而是必须从工厂获取它(尤其是字体)。

class Element {
public:
    Element();
    /* other stuff */

private:
    UIElement uie;
};

Element::Element() /* cannot construct the object here */ {
    /* ... some aquiring ... */
    new (&uie) UIElement(/* now I have the required data */);
}
Run Code Online (Sandbox Code Playgroud)

这是一个有效的实施吗?我可以简单地将对象放入类的构造已经分配的空间中吗Element

c++

5
推荐指数
1
解决办法
542
查看次数

使用 unique_ptr 和继承时双重释放或损坏

问题:

覆盖时因“双重释放或损坏”而崩溃unique_ptr

设置:

我正在开发日历应用程序。我正在使用 SFML,它有一个类sf::Drawable.
我有一个班级DayView : public sf::Drawable和一个班级WeekView : public sf::Drawable。这两个类是显示日历内容的具体实现。一日一周。
在类中CalendarScene,我希望有一个指向当前实现的指针,我只需单击即可替换该指针。
所以我将它们放入一个unique_ptr<sf::Drawable> displayImpl在覆盖时自动删除它们的位置。

现在我分配displayImpl = unique_ptr<WeekView>(new WeekView(...))
如果我现在按下按钮重新分配displayImpl = unique_ptr<DayView>(new DayView(...))应用程序会在 ( virtual) 析构函数中崩溃WeekView并显示消息*** Error in '/home/XXX/workspaces/CDT/XXX/Debug/XXX': double free or corruption (out): 0x0000000000f9ed60 ***

shared_ptr<vector<shared_ptr<Calendar::Entry>>>在这两个*View班级中也有一名成员。不知道这个有没有作用。

我的问题出在哪里?

代码

/*
 * CalendarScene.h
 *
 *  Created on: 17. Nov. 2016
 *      Author: martin
 */

#ifndef SCENES_CALENDARSCENE_H_
#define SCENES_CALENDARSCENE_H_

#include …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance memory-management unique-ptr

3
推荐指数
1
解决办法
4429
查看次数

标签 统计

c++ ×4

c++11 ×1

inheritance ×1

memory-management ×1

unique-ptr ×1