小编qlo*_*loq的帖子

我的示例中的继承层次结构有什么问题?

这是代码:

#include <iostream>

struct Parent
{
    virtual ~Parent() = default;
};

class Buddy
{
public:
    virtual ~Buddy() = default;
    Buddy(Parent& p) : parent_ { p } {}
    bool IsHovered() const { return is_hovered_; }

private:
    bool    is_hovered_ = false;
    Parent& parent_;
};

class Child : public Parent, public Buddy
{
public:
    Child() : Buddy { *this } {}

    bool BuddyIsHovered() const { return IsHovered(); }
};

int main()
{
    Child c;
    // Expected 'false', but 'true' is always printed.
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++

17
推荐指数
1
解决办法
784
查看次数

在Qt Creator中设置git

有人可以解释Qt Creator中的git属性是什么吗?
我已经安装了Qt Creator和git.Creator的"选项 - >版本控制"中有"常规"选项卡,选项很少:检查脚本的路径,配置文件的路径和SSH promt命令.我应该自己创建这些文件吗?
在"git"选项卡中有"Prepend to path"字段.它是git的路径吗?比如"/ usr/lib/git"?
最后什么是"存储库浏览器"的命令?

git qt-creator

6
推荐指数
1
解决办法
1万
查看次数

QAbstractProxyModel 不更新 dataChanged() 信号

这是我setData的源模型:

bool TreeModel::setData(const QModelIndex& index, const QVariant& value, int role)
{
    if (!index.isValid() || role != Qt::EditRole)
        return false;

    TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
    item->setData(index.column(), value);
    emit dataChanged(index, index);

    return true;
}
Run Code Online (Sandbox Code Playgroud)

我将dataChanged信号从源模型连接到dataChanged代理模型的信号,但显示代理模型的表视图只有在我点击它时才会更新。在这种情况下会出现什么问题?我应该以某种方式dataChanged在代理模型中手动发出信号吗?

来自模型的数据:

QVariant TreeModel::data(const QModelIndex& index, int role) const
{
    if (!index.isValid() || role != Qt::DisplayRole)
        return {};

    TreeItem* item = static_cast<TreeItem*>(index.internalPointer());
    return item->dataAt(index.column());
}
Run Code Online (Sandbox Code Playgroud)

来自 TreeItem:

QVariant TreeItem::dataAt(int n) const
{
    if (n < m_data.size())
        return m_data[n];
    else
        return {}; …
Run Code Online (Sandbox Code Playgroud)

c++ qt

6
推荐指数
1
解决办法
1673
查看次数

为什么非虚拟析构函数没有内存泄漏

我被告知B->b在以下代码中没有内存泄漏:

    struct A {}; // no virtual destructor
    struct B : public A {
    int b;
    }

    int main() {
        A* a = new B {};
        delete a;
    }
Run Code Online (Sandbox Code Playgroud)

如果是真的,你能解释一下为什么吗?

c++

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

如何使函数能够接受原始 poniters 作为迭代器?

我有两个函数可以拆分字符串并将标记添加到向量中:

template < typename InputIterator, typename ContainerType >
void Slice(InputIterator begin,
           InputIterator end,
           typename InputIterator::value_type delimiter,
           ContainerType& container)
{
    using CharType = InputIterator::value_type;
    InputIterator right = begin;
    while (true) {
      begin = find_if_not(right, end, [ delimiter ](CharType c) { return c == delimiter; });
      if (begin == end) {
        break;
      } else {
        right = find_if(begin + 1, end, [ delimiter ](CharType c) { return c == delimiter; });
        container.push_back(std::basic_string< CharType >(begin, right));
      }
    }
}

template < typename InputIterator, …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
82
查看次数

标签 统计

c++ ×4

git ×1

qt ×1

qt-creator ×1