小编Moo*_*min的帖子

在c ++中通过引用传递可选参数

我在C++中遇到了可选函数参数的问题

我要做的是编写带有可选参数的函数,该函数通过引用传递,这样我就可以用两种方式(1)和(2),但是(2)我真的不在乎什么是的价值mFoobar.

我试过这样的代码:

void foo(double &bar, double &foobar = NULL)
{
   bar = 100;
   foobar = 150;
}

int main()
{
  double mBar(0),mFoobar(0);

  foo(mBar,mFoobar);              // (1)
  cout << mBar << mFoobar;

  mBar = 0;
  mFoobar = 0;

  foo(mBar);                     // (2)
  cout << mBar << mFoobar;

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

但它崩溃了

void foo(double &bar, double &foobar = NULL)
Run Code Online (Sandbox Code Playgroud)

有消息:

error: default argument for 'double& foobar' has type 'int'
Run Code Online (Sandbox Code Playgroud)

没有函数重载可以解决它吗?

c++ pass-by-reference optional-parameters

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

在c ++中将成员函数指针传递给成员对象

我在使用C++函数指针时遇到问题.这是我的例子:

#include <iostream>

using namespace std;

class bar
{
public:
    void (*funcP)();
};

class foo
{
public:
    bar myBar;
    void hello(){cout << "hello" << endl;};
};

void byebye()
{
    cout << "bye" << endl;
}


int main()
{
    foo testFoo;

    testFoo.myBar.funcP = &byebye;         //OK
    testFoo.myBar.funcP = &testFoo.hello;  //ERROR
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Compilator在testFoo.myBar.funcP = &testFoo.hello;以下位置返回错误:

ISO C++禁止获取绑定成员函数的地址以形成指向成员函数的指针.说'&foo :: hello'

无法在赋值时将'void(foo :: )()'转换为'void()()'

所以我试着这样:

class bar
{
public:
    void (*foo::funcP)();
};
Run Code Online (Sandbox Code Playgroud)

但是现在编译器增加了一个:

'foo'尚未宣布

有没有办法让它发挥作用?

提前感谢您的建议

c++ member-function-pointers function-pointers

20
推荐指数
2
解决办法
3万
查看次数

c ++将方法添加到头文件中定义的类

我想知道是否可以将主程序中的方法添加到头文件中定义的现有类中.例如:class CFun在文件中定义了CFun.hpp,但在我们中party.cpp我们想要添加一个方法void hello() {cout << "hello" << endl;};而不进行编辑CFun.hpp

显然(不幸的是)建筑:

#include "CFun.hpp"

class CFun
{
  public:
    void hello() {cout << "hello" << endl;};
};
Run Code Online (Sandbox Code Playgroud)

不起作用返回错误 Multiple declaration for 'CFun'

是否可以在没有类继承的情况下使其工作?

c++ methods header class file

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

在Qt中使用多线程时的事件循环和信号槽处理

我在使用时遇到了一些问题,QThreads这让我在找到合适的组合之前探索了不同的组合.但是,当涉及事件循环和信号槽处理时,我仍然不完全理解下面显示的四种情况中发生的事情.

我在OUTPUT部分添加了一些注释,但正如您所看到的,我不确定我对观察到的行为的原因是否正确.此外,我不确定是否case 3可以在实际代码中使用.这是我的测试代码(main.cpp每种情况只有不同):

worker.h:

#include <QObject>
#include <QDebug>
#include <QThread>

class Worker : public QObject
{
    Q_OBJECT
public:
    explicit Worker(QObject *parent = 0) { this->isRunning_ = false;}
    bool isRunning() const { return isRunning_; }

signals:
    void processingFinished();
    void inProgress();

public slots:
    void process()
    {
        this->isRunning_ = true;
        qDebug() << this << "processing started";
        for (int i = 0; i < 5; i++)
        {
            QThread::usleep(1000);
            emit this->inProgress();
        }
        qDebug() << this << "processing finished";
        this->isRunning_ …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading event-loop signals-slots

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

指向QList的指针 - at()与[]运算符

我在理解一些QList行为方面遇到了问题.

#include <QList>
#include <iostream>
using namespace std;

int main()
{
    QList<double> *myList;

    myList = new QList<double>;
    double myNumber;
    double ABC;

    for (int i=0; i<1000000; i++)
    {
        myNumber = i;
        myList->append(myNumber);
        ABC = myList[i]; //<----------!!!!!!!!!!!!!!!!!!!
        cout << ABC << endl;
    }

    cout << "Done!" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到编译错误无法在标记行的赋值中将'QList'转换为'double'.它在我使用时起作用ABC = myList.at(i),但QT参考似乎说at()并且[] operator是同样的事情.有人知道是什么产生了影响吗?

谢谢

c++ qt qt4 qlist

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

将指针传递给2D数组c ++

我有很长一段时间遇到这个问题 - 我将固定大小的2D数组作为类成员.

class myClass
{ 
public:
        void getpointeM(...??????...);
        double * retpointM();

private:

   double M[3][3];

};

int main()
{
     myClass moo;
     double *A[3][3];

     moo.getpointM( A );  ???
     A = moo.retpointM(); ???

} 
Run Code Online (Sandbox Code Playgroud)

我想将指针传递给M外面的矩阵.这也可能是很简单的,但我就是找不到适当的组合&*

感谢帮助.

c++ arrays multidimensional-array pointer-to-member

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

将目录中存储的所有外部库添加到Qt项目中

有没有办法添加来自给定文件夹的所有库,而无需将每一个库添加到LIBSQt项目文件中的变量.

我已将所有库(DLL(win)或SO(unix))与头文件放在一个目录(MYLIBS)中,并尝试这样的方法:

LIBS *= -L$$PWD/MYLIBS -l*
INCLUDEPATH += $$PWD/MYLIBS
DEPENDPATH += $$PWD/MYLIBS
Run Code Online (Sandbox Code Playgroud)

它不适用于错误消息cannot find -l*.是否可以qmake在创建Makefile时使用通配符?

c++ qt qmake wildcard shared-libraries

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

我怎么能相信从double转换为整数?

我一直在研究一些用于创建直方图的简单代码,并发现以下代码:

double value = 1.2;
double bucketSize = 0.4;
double bucketId = value / bucketSize;

std::cout << "bucketId as double: " << bucketId << std::endl;
std::cout << "bucketId as int: " << int(bucketId) << std::endl;
Run Code Online (Sandbox Code Playgroud)

导致疯狂的输出:

bucketId as double: 3
bucketId as int: 2
Run Code Online (Sandbox Code Playgroud)

寻找合适的时候);这基本上毁了我的电脑信任bucketIdvalue同时,创建直方图.

我知道存在舍入错误等但是这个问题是否有任何通用解决方案?

(以防万一)请不要建议0.5在施法前添加分区的结果,int因为在某些情况下它显然不能很好地工作(例如double value = 3; double bucketSize = 2;)

提前致谢.

c++ casting division double-precision

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

通过QTextStream流式传输到QTextEdit

我经常想使用QTextEdit作为显示正在写入流的内容的快速方法.也就是说,我不想写QTextStream(stdout),而是想做类似的事情:

 QTextEdit qte; 
 QTextStream out(qte);  
Run Code Online (Sandbox Code Playgroud)

如果我在写入附加到QString的QTextStream后发出信号,我可以做类似的事情.
问题是我希望界面与我流式传输时的界面相同stdout:

out << some data << endl;
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一目标的任何想法?

提前致谢.

c++ qt qt4 qtextedit

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

c ++类朋友

我正在尝试编译这样的代码:

#include <iostream>
using namespace std;

class CPosition
{
  private:
    int itsX,itsY;
  public:
    void Show();
    void Set(int,int);
};

void CPosition::Set(int a, int b)
{
  itsX=a;
  itsY=b;
}

void CPosition::Show()
{
    cout << "x:" << itsX << " y:" << itsY << endl;
}

class CCube
{
  friend class CPosition;
  private:
         CPosition Position;
};

main()
{
  CCube cube1;

  cube1.Position.Show();
  cube1.Position.Set(2,3);
  cube1.Position.Show();
}
Run Code Online (Sandbox Code Playgroud)

但是在函数main()中无法访问'CCube :: Position'3次.我希望在CPube之外声明类CPosition,以便将来可以在新类中使用它,例如CBall :)但是如何在不使用继承的情况下使其工作.可能吗 :)?

问候,PK

c++ inheritance class friend

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