小编bpw*_*621的帖子

我可以从上一个参数设置默认参数吗?

是否可以在函数参数列表中使用先前的参数作为参数列表中后续参数的默认值?例如,

void f( int a, int b = a, int c = b );
Run Code Online (Sandbox Code Playgroud)

如果可以,有任何使用规则吗?

c++ arguments function

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

gcc的"-Wl,option"和"-Xlinker option"语法之间的任何区别

我一直在查看一些配置文件,我已经看到两者都被使用(虽然在不同的架构上).如果你在linux盒子上使用gcc,那么将选项传递给链接器的两种语法之间有什么区别吗?阅读gcc手册,就我所知,它们几乎完全相同.

c linker gcc ld

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

std :: bind重载决议

以下代码工作正常

#include <functional>

using namespace std;
using namespace std::placeholders;

class A
{
  int operator()( int i, int j ) { return i - j; }
};

A a;
auto aBind = bind( &A::operator(), ref(a), _2, _1 );
Run Code Online (Sandbox Code Playgroud)

事实并非如此

#include <functional>

using namespace std;
using namespace std::placeholders;

class A
{
  int operator()( int i, int j ) { return i - j; }
  int operator()( int i ) { return -i; }
};

A a;
auto aBind = bind( &A::operator(), ref(a), …
Run Code Online (Sandbox Code Playgroud)

c++ functional-programming std c++11

24
推荐指数
2
解决办法
7499
查看次数

是必要的纯抽象类(接口)的虚拟继承

为什么在编译器下面的代码中抱怨这PureAbstractBase是一个模糊的基类MultiplyInheritedClass?我意识到我有两个PureAbstractBasein MultiplyInheritedClass和that的副本,FirstConreteClass并且SecondConreteClass应该实际上派生,因为它们是钻石的中间行(这确实解决了下面代码的问题).但即使我有两个接口副本,为什么代码中的代码MultiplyInheritedClass不仅仅覆盖它们并且明确地选择了定义的接口类MultiplyInheritedClass

#include <iostream>
using namespace std;

class PureAbstractBase {
  public:
    virtual void interface() = 0;
};

// I know that changing the following line to:
// class FirstConcreteClass : public virtual PureAbstractBase {
// fixes the problem with this hierarchy
class FirstConcreteClass : public PureAbstractBase {
  public:
    virtual void interface() { implementation(); }
  private:
    void implementation() { cout << "This is object FirstConcreteClass\n"; } …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-inheritance virtual-inheritance

13
推荐指数
2
解决办法
7320
查看次数

使用和不使用std = c ++ 0x混合库的任何问题

我正在编写一个库,该库必须依赖于目前尚未编译且支持新标准的库.我想编译一个必须依赖于std = c ++ 0x的库的库.这样做有什么问题吗?

c++ gcc c++11

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

打印分支说明

Git支持一个名为--edit-description的分支命令选项,它指出它由"各种"其他命令使用.一个命令(至少默认情况下)不使用它是git branch(当用于简单列出本地分支时).有没有办法让git分支显示分支描述(详细选项看起来只是添加了分支上的最后一次提交)?

要清楚,我想要像下面这样的东西

> git branch
* master      I am the alpha and the omega
  bugfix1     This is the fix to that thing
  future      Transition to the new architecture
Run Code Online (Sandbox Code Playgroud)

git

12
推荐指数
2
解决办法
3098
查看次数

通过Gnuplot的管道接口从C/C++可视化

我试图将管道接口用于gnuplot(标准的一个gnuplot_i.{cpp,hpp}),以便生成在C++编写的另一个程序中不断变化的值的实时显示.这项工作正常,但我想知道是否有人有任何改进建议.

该实现包含将单个矢量和2个矢量绘制为2D图的便利方法.它是通过对mktemp函数的标准库调用写出临时文件,然后将其用作gnuplot plot调用的输入来实现的.这会生成太多临时文件,并且当绘图上的更新速率很高(可能IO限制在某一点)时似乎不能正常工作.我决定在绘图调用中使用' - '伪文件,然后将向量直接发送到管道(以一行"e"结束).这效果更好,但仍然不是很好.

有没有雨衣的方式做什么,我试图做的比不断再生的情节,当值发生了变化?多久是安全更新与新的信息的情节?或者,也许有一种更简单的方法来实现我想要做的事情?

@Andy Ross

我本身没有"要求".浮石的意思是,在使用gnuplot时,可能有一种更优雅的方法来做我正在尝试的东西.虽然优雅是主观的,但我发现我目前采用的方法特别不优雅.我所说的安全之处在于,是否有人知道在采用所述方法的IO问题(例如,延迟,显示器锁定等)的更新速率.

我想避免使用工具包,原因如下(至少我的短名单).

  • 我发现在不同的体系结构上安装它们通常是非常重要的,特别是作为非root用户(当它们需要跨操作系统不是标准的依赖时).
  • 它们会对使用此软件的其他人产生额外的编译依赖性.
  • 大多数人似乎没有任何真正的标准用于此目的(我自己以及我工作的大多数人通常只保存日志类型文件并在MATLAB中进行运行后分析).
  • 我知道/学习gnuplot语法.我不知道superPlottingApiXX的语法.
  • gnuplot的功能集几乎适用于我希望能够使用此软件的各种类型的东西.

但是,如果您对C/C++绘图库有任何特别的建议,考虑到上面的列表似乎很合适,我总是对建议感兴趣(警告:我已经找了很多东西找到它们).

c c++ visualization data-visualization gnuplot

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

C++ Matrix类层次结构

应的矩阵的软件库有一个根类(例如,MatrixBase),从该多个专门(或更受约束)矩阵的类(例如,SparseMatrix,UpperTriangluarMatrix等等)导出?如果是这样,派生类应该公开/保护/私下派生吗?如果没有,它们是否应该用封装公共功能的实现类组成,否则不相关?别的什么?

我正与软件开发人员同事(我本身并不是这样)进行过对话,他们提到从一个更普遍的类中派生一个更受限制的类是一个常见的编程设计错误(例如,他使用了它的例子)CircleEllipse类中派生一个类似于矩阵设计问题并不是一个好主意,即使它确实是SparseMatrix"IS A" MatrixBase.对于基本操作,基类和派生类所呈现的接口应该相同; 对于特殊操作,派生类将具有可能无法为任意MatrixBase对象实现的其他功能.例如,我们只能为PositiveDefiniteMatrix类对象计算cholesky分解; 但是,乘以标量对于基类和派生类应该以相同的方式工作.此外,即使底层数据存储实现不同,它也operator()(int,int)应该按预期工作于任何类型的矩阵类.

我已经开始查看一些开源矩阵库,看起来这是一个混合包(或者我正在看一个混合的库包).我正在计划帮助重构一个数学库,这是一个争论的焦点,我希望得到的意见(除非对这个问题有一个客观的正确答案),关于什么样的设计理念会是最好的,任何合理方法的利弊是什么.

c++ oop

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

重载的转换操作符或单个参数的构造函数

如果一个类有一个参数构造函数,我理解它是由构造函数隐式转换为适当上下文中的参数类型.定义转换运算符还会使类可转换为其他类型.问题

  • 是否隐式调用转换运算符?
  • 如果为一个类定义了单个参数构造函数和具有相同类型的转换运算符,那么它是否优先于另一个,或者它是否含糊不清?
  • 如果您已经决定要将某个类转换为给定类型,哪种方法更好,还是应该同时提供?

编辑:

我看到我不明白方向性,两人在相反的方向上进行转换.作为后续

  • 如果你可以控制两个你想要互相转换的类,那么就这两个操作有一个首选的方法来实现这个目的吗?
  • 是否可以将转换运算符标记为显式?

c++ constructor casting

8
推荐指数
2
解决办法
1497
查看次数

重构switch语句的设计模式

我在标题中有类似的内容

class MsgBase
{
  public:
    unsigned int getMsgType() const { return type_; }
    ...
  private:
    enum Types { MSG_DERIVED_1, MSG_DERIVED_2, ... MSG_DERIVED_N };
    unsigned int type_;
    ...
};

class MsgDerived1 : public MsgBase { ... };
class MsgDerived2 : public MsgBase { ... };
...
class MsgDerivedN : public MsgBase { ... };
Run Code Online (Sandbox Code Playgroud)

并用作

MsgBase msgHeader;
// peeks into the input stream to grab the
// base class that has the derived message type
// non-destructively
inputStream.deserializePeek( msgHeader ); 
unsigned …
Run Code Online (Sandbox Code Playgroud)

c++ refactoring design-patterns

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