小编Ami*_*mar的帖子

为什么在函数内局部初始化外部变量会产生错误?

这段代码很好编译:

extern int i = 10;

void test()
{
    std::cout << "Hi" << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

虽然这个错误:

void test()
{
    extern int i = 10;
    std::cout << "Hi" << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

错误:'我'有'extern'和初始化程序

我读了C++ Primer

包含显式初始值设定项的任何声明都是定义.我们可以在定义为extern的变量上提供初始化器,但这样做会覆盖extern.具有初始化程序的extern是一个定义.在函数内部的extern上提供初始化程序是错误的.

有人可以解释为什么如果在函数本地完成这应该是一个错误,而在全局范围内允许这样做?

c++ declaration definition extern

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

强制调用基类虚函数

我有一些像这样的事件

class Granpa // this would not be changed, as its in a dll and not written by me
{
public:

   virtual void onLoad(){}

}

class Father :public Granpa // my modification on Granpa
{
public:

    virtual void onLoad()
    {
       // do important stuff
    }

}

class Child :public Father// client will derive Father
{

   virtual void onLoad()
   {
       // Father::onLoad(); // i'm trying do this without client explicitly writing the call

       // clients code
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法强制调用onLoad而不实际编写Father :: …

c++ virtual inheritance class function

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

MouseArea窃取了QML元素的鼠标事件

如果我放置一个MouseAreaQML元素,那么MouseArea将窃取所有鼠标事件.因此,TextEdit将是不可编辑和不可选择的.

TextEdit {
    // some properties
    MouseArea {
        // some properties
        OnClicked: { /* do something */ }
    }
}
Run Code Online (Sandbox Code Playgroud)

有办法解决吗?

顺便说一句,如果我把一个大的MouseArea放在另一个上MouseArea,更大的MouseArea将窃取所有鼠标事件.我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?

qml

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

将QWidget嵌入X11窗口

我想将两个QWidgets嵌入到使用XLib创建的窗口中.我写了这段代码:

// Assume all the necessary headers included

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

   // Create widget 1
   QWidget widget1 ; 
   widget1.setGeometry(44,44,666,666);
   widget1.show();

   // Create widget 2   
   QWidget widget2 ;
   widget2.setGeometry(144,144,666,666);
   widget2.show();      

   Display *display = XOpenDisplay( 0 ); // 0 parameter for default values

   if ( display != NULL )
   {
      // Create the x11 window using XLib
      Window w = XCreateWindow(display, DefaultRootWindow(display), 
      0, 0, 1200, 1100, 0,CopyFromParent, CopyFromParent, CopyFromParent, 0, 0);

      XMapWindow(display, w);
      XFlush(display);

      XReparentWindow(display, widget1.winId(), …
Run Code Online (Sandbox Code Playgroud)

c++ x11 qt xlib

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

使用修改的floyd warshall打印给定节点的最短路径b/w

我阅读了维基百科给出的方法,通过修改Floyd Warshall算法在图表中打印两个给定点的短路径.我编写了这个,但它并没有真正给出预期的输出:

  1. minimumDistanceMatrix[i][j]将图中各个权重的所有元素和矩阵中的所有元素初始化shortestPathCalculatorMatrix [i][j]为-1.

  2. 然后 :

    // Find shortest path using Floyd–Warshall algorithm
    
    for ( unsigned int k = 0 ; k < getTotalNumberOfCities() ; ++ k)
       for ( unsigned int i = 0 ; i < getTotalNumberOfCities() ; ++ i)
          for ( unsigned int j = 0 ; j < getTotalNumberOfCities() ; ++ j)
              if ( minimumDistanceMatrix[i][k] + minimumDistanceMatrix[k][j] < minimumDistanceMatrix[i][j] )
              {
                    minimumDistanceMatrix[i][j] = minimumDistanceMatrix[i][k] + minimumDistanceMatrix[k][j];
                    shortestPathCalculatorMatrix [i][j] =  k;
              }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后 …

c++ algorithm shortest-path floyd-warshall

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

信号处理,中断处理问题

当进程正在执行阻塞系统调用时,例如读或写,信号已到达.系统调用是否因错误EINTR而终止?处理系统调用后是否重新启动系统调用?

假设,系统调用以错误EINTR终止,内核在返回用户空间之前处理信号.

信号句柄是在用户模式/内核模式下执行的吗?如果它处于用户模式,在系统调用(读/写)之后是否会返回指令,在此期间信号到达或在处理信号后再次进入内核模式并从ret_from_syscall返回给用户.如何在信号到达的系统调用旁边的指令处恢复执行?

是否可以通过在sigaction中传递SA_RESTART标志来重新启动系统?

linux linux-kernel

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

类的自己类型的静态类成员

可能重复:
如果没有创建该类的对象,则类的静态成员是否占用内存?
一类中静态成员的内存分配

"一个类不被认为是定义的,直到它的类体完整,一个类不能拥有自己类型的数据成员.一个类可以有数据成员作为指针/引用它自己的类型."

  • C++入门(Lippman Lajoie)

说得通.

但是为什么这允许呢?

class justAClass
{
     public  : 
     justAClass();

     private :          
     static justAClass justAMember;
}
Run Code Online (Sandbox Code Playgroud)

对于指针,它是可以理解的.但是上面这个怎么样呢?我将如何决定这类课程的大小?它是一个递归的情况(没有基本条件)拥有自己类型的成员,即使它是静态的?

c++ recursion static member

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

识别地址是属于堆还是堆栈或寄存器

我有一个指针可用于C/C++变量.是否有可能准确地确定这个变量属于哪个内存段?如果有,怎么样?

注意:我只有这个变量的地址,如果变量是本地/全局等,则没有更多信息.

c c++ heap stack memory-management

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

邮件队列内容存储在哪里?

在使用POSIX消息队列时,我注意到文件系统上创建了一些文件,其名称是我创建队列.我的问题:

Q1.消息队列是否将硬盘上的消息排队,而不是RAM?

Q2.如果是这样,那么在实施中它是否应该非常慢,因为它涉及HardDisk?


编辑:

我在"Linux编程接口 "一书中读到了这一点:

在Linux上,POSIX消息队列在虚拟文件系统中实现为i节点,消息队列描述符和打开消息队列描述分别实现为文件描述符和打开文件描述.但是,这些是SUSv3不需要的实现细节,并且在某些其他UNIX实现上不适用.

即使它是VFS,它仍然存储在HardDisk上,对吧?

记住这些信息,现在有人可以评论第二个问题吗?(和/或第一个也有更多要添加的东西)

linux message-queue posix-api

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

QML TextField:检测到属性"text"的绑定循环

我正在使用QML和JavaScript.我想确切地知道以下错误意味着什么,所以我可以解决它:

QML TextField: Binding loop detected for property "text"
Run Code Online (Sandbox Code Playgroud)

有时我的应用程序给了我这个警告,我不明白

javascript warnings loops qml

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