小编Oeb*_*ele的帖子

在Git中删除分支时会发生什么

我一直在寻找这个问题的答案,但我仍然不完全确定它的答案.我发现的关于删除分支的大多数信息只不过是手册所说的副本(例如,在SO上).我认为一个核心问题是我不确切知道Git中的一个分支是什么(即使有许多文章声称要解释这一点).我找到的唯一有用的信息是在这个SO答案和使用git安装的文档.

我的问题:

当我运行git branch -d BRANCH_NAME,

  1. 引擎盖下发生了什么?
  2. 什么是外部变化,即我与存储库的交互如何变化?
  3. 任何这些变化都可以被视为历史的变化吗?

另外还有相同的子问题git branch -D BRANCH_NAME.

我目前的理解:

首先我对分支的看法:取决于上下文,术语分支指的是指向某个提交的指针(严格称为分支头),或者指向那个提交的提交列表

我认为发生了什么(但我很不确定),因为git branch -d BRANCH_NAME:

  1. 删除了指向分支头的指针,而不是更多
  2. 我再也看不到任何列表中的分支了,我不能再切换到它或从它分支了(虽然我想我可以在该提交中创建一个新的分支,以有效地实现这些功能)
  3. 可能不是:提交仍然存在,它们只是没有标记分支的名称?

我认为发生了什么,因为git branch -D BRANCH_NAME:

  1. 删除了指向分支头的指针,并删除了不在其他分支上的任何提交
  2. 我再也看不到任何列表中的分支了,我不能再切换到它或从中分支,或以任何方式检索代码
  3. 是的:分支中的提交丢失了

git branch git-branch

7
推荐指数
1
解决办法
801
查看次数

如何确保使用移动构造函数

下面的代码给出了错误:

use of deleted function ‘constexpr B::B(const B&)’
Run Code Online (Sandbox Code Playgroud)

现在,我知道这是因为通过指定移动构造函数(有意)隐式删除了复制构造函数,并且复制向量会导致对(已删除)复制构造函数的调用.我想我也理解为什么使用向量的复制构造函数和赋值运算符.我显然想要使用移动构造函数和赋值运算符:移动对象,因此也移动它包含的向量.那么,如何让我的移动构造函数/赋值运算符使用向量的移动构造函数/赋值运算符?

这是代码:

#include <vector>

class B {
private:
    /* something I don't want to copy */
public:
    B() {};
    B(B&& orig) {/* move contents */};
    B& operator=(B&& rhs) {
        /* move contents */
        return *this;
    };
};

class A {
private:
    vector<B> vec;
public:
    A() : vec() {};
    A(A&& orig) : vec(orig.vec) {};
    A& operator=(A&& rhs) {
        vec = rhs.vec;
        return *this;
    };
};
Run Code Online (Sandbox Code Playgroud)

c++ move-constructor c++11 move-assignment-operator

6
推荐指数
2
解决办法
632
查看次数

Netbeans中错误的"无法解析标识符"

我的程序编译得很好,但Netbeans告诉我"无法解析标识符to_string".

我在" Netbeans 7.2节目"中尝试了所有内容.无法解析标识符",虽然构建成功 " 我在代码辅助选项中将"C++标准"设置为"C++ 11".

到目前为止,这是解决此问题的唯一功能.然而它也是我使用的第一个C++ 11特性,这使我相信它与Netbeans有关,而不是理解我正在使用C++ 11,尽管我在代码辅助菜单中明确指定了它.

最小的例子:

#include <string>
int main() {
    std::to_string(1);
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用时出现同样的问题 nullptr

编辑2:我突然意识到提到我不使用生成的Makefile,但是SCons可能很重要.

c++ netbeans c++11 netbeans-8

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