小编Ben*_*oît的帖子

关于C++中声明语法的技巧问题

看看这里:在下面的代码中,b的类型是什么?

struct A {
    A (int i) {}
};

struct B {
    B (A a) {}
};

int main () {
    int i = 1;
    B b(A(i)); // what would be the type of b
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果有人能够彻底向我解释为什么会存在这样的语法,我将不胜感激:)

谢谢.

c++ syntax

9
推荐指数
3
解决办法
1702
查看次数

Visual Studio中的复杂构建

我有一些我无法找到在Visual Studio中执行的好方法:

  1. 预构建步骤调用代码生成器,该代码生成器生成稍后编译的一些源文件.这可以通过向项目添加空白文件(稍后用实际生成的文件替换)在有限的范围内解决,但如果我不知道名称和/或自动生成的源文件的数量,它就不起作用.我可以在GNU make使用中轻松解决它$(wildcard generated/*.c).如何使用Visual Studio执行类似操作?

  2. 如果不需要修改文件("make"行为),我可以阻止预构建/后构建事件运行吗?目前的解决方法是编写一个包装器脚本,它将检查我的时间戳,这有效,但有点笨拙.

  3. 找到VS外部安装的外部库和头文件的好方法是什么?在*nix的情况下,它们通常会安装在系统路径中,或者位于系统路径中autoconf.我想我可以在项目设置中使用用户定义的宏指定路径,但是放置这些宏的好地方在哪里可以轻松找到并调整它们?

为了清楚起见,我知道存在更好的Windows构建系统(CMake,SCons),但它们通常自己生成VS项目文件,我需要将这个项目集成到现有的VS构建系统中,所以我希望我只是简单的VS项目文件,而不是生成的文件.

c c++ windows build visual-studio

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

有没有办法让Asio在没有Boost的情况下工作?

我知道有一个版本的ASIO没有包含在Boost命名空间中,但即使那时ASIO也依赖于Boost,但我想知道是否有办法让ASIO在没有依赖Boost的情况下工作(因为我不能包含Boost进入项目,原因太多了).

c++ boost boost-asio

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

MS Visual Studio项目头文件

我在MSVS中开发C/C++代码相当新,但是已经让我感到困惑的一件事就是为什么在将一组源文件和头文件添加到我的项目之后,它们分别显示在MSVS文件夹的源文件下'和'Header Files',我随后必须告诉编译器我的头文件在'Project-> properties-> C/C++ - > General'下.在我看来,MSVS应该已经尝试通过首先查看我已包含在项目中的头文件集来解决任何"包含"......"'语句.

有人关心评论这里使用的逻辑吗?

谢谢,特拉维斯

c c++ compiler-construction include visual-studio-2008

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

估计单词复杂度的算法

我需要估算打字员的单词的复杂性.例如,"受苦"比"人"容易,因为"o"和"p"比"e"和"r"更难.小指按下的任何按键比用食指更难击中.从基本位置移动手指比不移动更难.并使用shift键也增加了硬度.

在这种情况下可以采用什么方法?

algorithm

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

将类似的函数组合成一个通用函数,包括将函数指针作为参数传递

我试图将以下两个函数组合成一个便携函数:

void NeedleUSsim::FindIdxRho()
{
    searchTmp = &ninfo->rho;
    double *p = std::find_if(tplRho_deg, tplRho_deg+sampleDim[2], &NeedleUSsim::GreaterThanOrEqualTo);
    while(p != tplRho_deg+sampleDim[2])
    {
        idxRho = p - tplRho_deg;
        p = std::find_if(p+1, tplRho_deg+sampleDim[2], &NeedleUSsim::GreaterThanOrEqualTo);
    }
}

void NeedleUSsim::FindIdxDepth()
{
    searchTmp = &ninfo->l;
    double *p = std::find_if(tplL, tplL+sampleDim[1], &NeedleUSsim::LessThanOrEqualTo);
    while(p != tplL+sampleDim[1])
    {
        idxL = p - tplL;
        p = std::find_if(p+1, tplL+sampleDim[1], &NeedleUSsim::LessThanOrEqualTo);
    }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望函数的参数将tpl成员作为指针传递,并将大小和rho/l作为值传递.searchTmp是一个文件范围双精度指针.是否有任何简单的方法传递&NeedleUSsim :: GreaterThanOrEqualTo函数作为我正在尝试轻松编写的函数的参数?

提前感谢您的建议.

c++

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

支持Scott Meyer的建议的C ++ IDE:优先于成员的非成员非朋友功能

Scott Meyer关于非成员函数增加封装并允许进行更优雅的设计(在设计方面)的论点在我看来非常有效。看到这里:文章

但是我对此有疑问。(似乎也是其他人,尤其是图书馆开发人员,他们通常完全忽略了这一点)

使用成员函数时,代码通常看起来更好,更逻辑。不过,这可能是一种后天的品味,只需要花些时间先熟悉一下算法,然后再研究对象。(不寒而栗)

所以也许我只有一个问题:

使用成员函数, 我的IDE都知道该类可以做什么。

对我来说,这是巨大的!我没有使用不支持成员函数代码完成功能的编程方式。在精心设计的库中,它完全替代了我的文档。即使我看了一下api doc,通过成员列表进行浏览也绝对是自然而合乎逻辑的,而且我可以确定,这就是结局。如果该方法不存在,我可以放心地假设它不存在,并且可以写我的非成员非朋友。

我在STL中提出了这一点,因为,很高兴看到算法与基本组件不同,并且因为您已经习惯了它

我还没有看到可以告诉我在特定类上可以使用哪些非成员函数的IDE。

这实际上是我的问题:是否有一个IDE(或IDE功能)可以帮助执行此代码约定?

c++ ide coding-style code-completion

5
推荐指数
2
解决办法
1039
查看次数

在C或C++中创建目录

如何使用C代码创建目录(除了分叉和使用mkdir的方法)?有没有像dirent.h这样的东西?dirent.h只允许读取目录.(不使用外部库)

c c++

5
推荐指数
2
解决办法
3594
查看次数

不了解const方法声明

太多的C#和太少的C++让我头晕目眩......有人能提醒我这个c ++声明是什么意思吗?具体来说,结尾是"const".非常感谢.

protected:
     virtual ostream & print(ostream & os) const
Run Code Online (Sandbox Code Playgroud)

c++

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

在 qgraphicsview 中忽略 svg 图像透明部分上的鼠标事件?

我正在处理包含相当多 svg 图像的图形视图(使用 C++ 和 Qt)。我拦截了对它们的点击,但是当鼠标悬停在 svg 项目的透明部分上时,我不想接收事件(或能够忽略它们)。

是否可以 ?
svg 文件是否应该专门设计用于此类用途?
是否有一些我还没有(还)听说过的隐藏 Qt 选项?

c++ svg transparent mouseevent qgraphicsview

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