小编KTC*_*KTC的帖子

你如何在STL列表中向后迭代?

我正在Windows和Mac之间编写一些跨平台代码.

如果list :: end()"返回一个迭代器来解决列表中最后一个元素之后的位置"并且可以在向前遍历列表时进行检查,那么向后遍历的最佳方法是什么?

此代码适用于Mac但不适用于Windows(不能超出第一个元素):

list<DVFGfxObj*>::iterator iter = m_Objs.end();
for (iter--; iter!=m_Objs.end(); iter--)// By accident discovered that the iterator is circular ?
{
}
Run Code Online (Sandbox Code Playgroud)

这适用于Windows:

list<DVFGfxObj*>::iterator iter = m_Objs.end();
    do{
        iter--;
    } while (*iter != *m_Objs.begin());
Run Code Online (Sandbox Code Playgroud)

是否有另一种可以在for循环中实现的向后遍历方法?

c++ iterator stl traversal list

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

QWidget keyPressEvent覆盖

我正在尝试半个永恒现在覆盖QT中的QWidgets keyPressEvent函数,但它只是不起作用.我要说我是CPP的新手,但我知道ObjC和标准C.

我的问题看起来像这样:

class QSGameBoard : public QWidget {
Q_OBJECT

public:
  QSGameBoard(QWidget *p, int w, int h, QGraphicsScene *s);

signals:
  void keyCaught(QKeyEvent *e);

protected:
  virtual void  keyPressEvent(QKeyEvent *event);
};
Run Code Online (Sandbox Code Playgroud)

QSGameBoard是我的QWidget子类,我需要覆盖keyPressEvent并在每个事件上触发SIGNAL以通知一些注册的对象.

我在QSGameBoard.cpp中重写的keyPressEvent如下所示:

void QSGameBoard::keyPressEvent(QKeyEvent *event) {
  printf("\nkey event in board: %i", event->key());
  //emit keyCaught(event);
}
Run Code Online (Sandbox Code Playgroud)

当我将QSGameBoard ::更改为QWidget ::它接收事件,但我无法发出信号,因为编译器抱怨范围.如果我像这样写它,函数根本不会被调用.

这有什么问题?

c++ qt overriding virtual-functions

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

有哪些Fortran编译器?

什么Fortran编译器在这个时代,你会推荐哪些?请列出它支持的Fortran版本,它所使用的平台(例如*nix/Windows),以及它是否需要花钱.

(每个答案标准OS一个等)

compiler-construction fortran

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

FindFirstFile(Ex)通配符

Windows API FindFirstFile()FindFirstFileEx()接受搜索路径的通配符,"例如,星号(*)或问号(?)".我在哪里可以真正找到它接受哪些其他(如果有)字符的解释,更重要的是它们在FindFirstFile的上下文中的含义.

有人可以提供解释吗?谢谢.

winapi

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

C++ win32从键盘获取utf8字符

我如何使用 win32 api 读取击键?我还希望看到它们来自国际键盘,例如德语变音符号。

谢谢

c++ unicode winapi keyboard-events

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

Microsoft Windows上的C或C++ BigInt库

对于在Microsoft Windows上运行的编译器,有哪些任意精度整数(和/或有理数)库,您会推荐哪些?

请说明库的许可证类型/成本,支持的编译器(即GCC和/或VC++).

c c++ windows biginteger

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

模板的成员typedef在VS中的参数未声明标识符中使用,但不在GCC中使用

我正在看一些大量使用模板的代码.它在GCC上编译得很好,但在VS(在2003 - 2010 beta 1上测试)上没有编译,在语法分析期间它失败了.不幸的是,我不知道足够的代码结构能够减少问题并只在几行中重现它,所以我只能猜测原因.我希望有人能指出我正确的方向.

我们有

template< class UInt, typename IntT,
    bool is_signed = std::numeric_limits<IntT>::is_signed >
struct uii_ops_impl;

// ....

template<class UInt>
struct uii_ops_impl< UInt,
    typename make_signed<typename UInt::digit_type>::type, true >
{
    typedef UInt unbounded_int_type;
    typedef typename make_signed< typename unbounded_int_type::digit_type >::type
        integral_type;

    // ...

    static void add(unbounded_int_type& lhs, integral_type rhs);

    // ...
};

template<class UInt>
void uii_ops_impl<
    UInt, typename make_signed<typename UInt::digit_type>::type,
    true >::add(unbounded_int_type& lhs, integral_type rhs)
{
    // ....
}
Run Code Online (Sandbox Code Playgroud)

在VS上编译时,它返回的第一条错误消息(在许多中)是

:错误C2065:' unbounded_int_type':未声明的标识符

我的意思是,指向typedef吧?:-S

编辑:

这似乎与某些事情有关

typename make_signed<typename …
Run Code Online (Sandbox Code Playgroud)

c++ templates typedef visual-studio

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

为什么在CPP中有定义的常量和声明的常量?

为什么有两种方法可以在CPP中"声明"常量?
哪个更好,或者我应该写,我应该在哪个时候使用?

#define MYCON 100
const int MYCON=100
Run Code Online (Sandbox Code Playgroud)

c++ const constants

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