小编iFr*_*cht的帖子

我可以将 \copydoc 与函数或模板参数一起使用吗?

在 doxygen 中,有\copydoc(or @copydoc) 命令允许复制链接对象的文档文本,它可以指向:

成员(类、文件或组的)、类、命名空间、组、页面或文件

这是一个很好的功能,它运行良好,但我想从另一个类复制模板参数的文档,但那些没有完全限定的名称。

有没有办法使之成为可能?

c++ parameters templates doxygen function

5
推荐指数
0
解决办法
438
查看次数

我可以在没有鼠标事件的情况下获得OpenCV中的鼠标位置吗?

我发现的所有教程都setMouseCallback()用于设置将鼠标位置传递到的回调函数。不幸的是,仅当实际的鼠标事件发生时才调用此函数,但是我想在没有按下鼠标键的同时获取鼠标位置。

在OpenCV中有可能吗?

c++ mouse opencv callback

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

重新安装Windows后git stash无法正常工作

我最近重新安装了Windows。现在,在git stash我的任何github存储库上执行时,都会返回一条错误消息:

$ git stash
Cannot save the current worktree state
Run Code Online (Sandbox Code Playgroud)

这就是我得到的一切。尝试git -v stash没有帮助,因为stash它似乎没有冗长的模式。没有其他变化,只有一个修改的文件:

$git stash list
$git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   storage.h

no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

我确保在全局配置中将user.name和设置user.email为以前的值git loggit config user.name并使用和确认了这一点 …

windows git github

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

如何防止客户端将nullptr传递给构造函数?

使用期望a的构造函数std::unique_ptr,如何防止客户端nullptr有效传递?

class Foo{
    Foo(std::unique_ptr<Bar> bar) :
        myBar(std::move(bar))
    {}
}
Run Code Online (Sandbox Code Playgroud)

我可以使用nullptr_t参数重载构造函数,然后将其设置为已删除以nullptr在编译时检测某些s吗?

Foo(nullptr_t) = delete;
Run Code Online (Sandbox Code Playgroud)

nullptr当我已经在初始化列表中移动它时,我可以在构造函数的主体中安全地检查吗?(有事告诉我,我不能)

Foo(std::unique_ptr<Bar>) :
    myBar(std::move(bar))
{ 
    if(!bar)
        throw invalid_argument();
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor unique-ptr c++11

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

不可变和const成员函数有什么区别?

D编程语言参考在声明类型限定符部分中显示了两个示例,因此这些都是可能的:

struct S
{
    int method() const
    {
        //const stuff
    }
}

struct S
{
    int method() immutable
    {
        //immutable stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

来自文档:

Const成员函数是不允许通过成员函数的this引用更改对象的任何部分的函数.

和:

不可变成员函数保证该引用引用的对象和任何内容是不可变的.

我发现了这个问题,但所有的答案都是关于数据类型,而不是存储类.这同样适用于d const的常见问题,即使它是一个有趣的阅读.

那么上面两个定义之间的区别是什么?是否有表达可以取代//const stuff并且合法但不是//immutable stuff

d const member-functions immutability storage-class-specifier

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

基于范围的for循环可以采用类型参数吗?

从我所知,范围为基础的循环可以仅采取一个C语言风格的阵列,具有部件的功能的类型的对象begin()end()定义,或一个类型的对象Type的量,游离的功能begin(Type)end(Type)可以与ADL找到.

有没有办法让循环采用类型参数,所以像这样的代码编译?

class StaticVec{
//shortened implementation
    static myIterator begin();
    static myIterator end();
};

void foo() {
    for(auto elem : StaticVec){
       dosomething(elem);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想省略StaticVec::values()在循环中写入的必要性.

c++ static for-loop c++11

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

使用智能指针,.get()和 - >之间有区别吗?

std::shared_ptrstd::unique_ptr功能.get()operator->做的完全一样吗?

或者与std::vectors .at()operator[]?有区别吗?

c++ stl smart-pointers operators c++11

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

如果 std::make_unique 从未被调用,为什么在默认成员初始化中不需要参数?

默认成员初始化需要引用现有的构造函数,无论它是否被使用过。因此,查看一个Foo没有默认构造函数的结构:

struct Foo{
    Foo(int x) : x_(x){}
    int x_;
};
Run Code Online (Sandbox Code Playgroud)

很明显,以下内容不起作用,并导致编译错误:

class Bar0{
    Foo foo = Foo(); #constructor Foo() doesn't exist
    Bar0() : foo(0){}
}
Run Code Online (Sandbox Code Playgroud)

但是,它是一个不同的故事std::unique_ptrstd::make_unique

class Bar1{
    unique_ptr<Foo> foo = make_unique<Foo>(); #compiler doesn't complain
    Bar1() : foo(make_unique<Foo>(0)){}
}
Run Code Online (Sandbox Code Playgroud)

这是令人费解的,因为只要Bar1包含一个foo不在初始化列表中的构造函数,编译就会失败。

我可以确认这对 MSVC12 来说是正确的。可能是编译器错误吗?

c++ default initialization unique-ptr c++11

0
推荐指数
1
解决办法
2301
查看次数

为什么我不必在类中转发声明函数或变量?

原始问题可以在下面找到.

所以,我们发现以下内容不起作用:

void f(){
    g();
}
void g(){}
Run Code Online (Sandbox Code Playgroud)

但是,它确实在一个类工作,这就是我困惑的地方:

class test{
   int getY(){
       return getX();
   }
   int getX(){
       return 10;
   }
}
Run Code Online (Sandbox Code Playgroud)

这在MSVC10.0下编译得非常好.

Ideone链接.它确实有效.

因此,在重新措辞之后,问题是:

为什么我不需要在课堂内进行前向声明?

原始问题,请忽略

在C++中,声明函数或变量的顺序根本不重要.调用尚未声明的函数没有任何问题.这同样适用于变量:

但是,它不适用于课程.如果我想使用稍后在源文件中定义的类,我必须转发声明它.

为什么?什么阻止编译器知道所有类声明?

c++ variables class function c++11

-1
推荐指数
1
解决办法
173
查看次数