小编use*_*084的帖子

在头文件中初始化常量静态数组

我刚刚发现以下内容无效.

//Header File
class test
{
    const static char array[] = { '1', '2', '3' };
};
Run Code Online (Sandbox Code Playgroud)

初始化这个的最佳位置在哪里?

c++ arrays initialization header-files

38
推荐指数
4
解决办法
7万
查看次数

模板基构造函数调用成员初始化列表错误

我有一个基类,如下所示.

template<typename T>
class Base
{
   public:
      Base(int someValue);

      virtual T someFunc() =0;
};

template<typename T>
Base<T>::Base(int someValue)
{}
Run Code Online (Sandbox Code Playgroud)

然后是以下内容.

#include "base.hpp"

class Foo
   : public Base<Foo>
{
   public:
      Foo(int someValue);

      virtual Foo someFunc();
};

Foo::Foo(int someValue)
   : Base(someValue)
{}
Run Code Online (Sandbox Code Playgroud)

我从gcc 4.2.1得到以下错误.

error: class ‘Foo’ does not have any field named ‘Base’
Run Code Online (Sandbox Code Playgroud)

我应该提一下,在运行gcc 4.6.2的Fedora盒子上编译好.在我的os x Lion机器上编译时会发生此错误.

在此先感谢您的帮助.

编辑

问题似乎是我在调用构造函数时没有在Foo类中指出模板的类型.以下修复了os x中的错误.

: Base<Foo>(someValue, parent)
Run Code Online (Sandbox Code Playgroud)

编辑

是的,这确实看起来像一个bug.我之前提到的修复了os x下的错误,并且代码在fedora中使用该修复程序编译得很好.将去看看os x中是否有gcc更新.

c++ inheritance qt compiler-errors g++

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

Bourne Shell退出将无法正常工作

我有以下脚本

cat $1 | while read line
do
    line=`echo $line | tr "[:lower:]" "[:upper:]"`

    if [ "`echo $line | cut -f1 -d:`" = "foo" ] && \
       [ "`echo $line | cut -f2 -d:`" = "bar" ]; then
        echo 'exsist'
        exit 1;
    fi
done
Run Code Online (Sandbox Code Playgroud)

一切都可以回应,然后当脚本命中退出时,它不会继续前进.有任何想法吗.

谢谢

shell sh exit

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

C++ 2D动态数组

我试图动态地将2d数组分配给构造函数初始化中的指针.

FooBar::FooBar()
    : _array( new int[10][10] )
{ }
int **_array;
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我知道多维数组的分配有点不同.是否有人能够通过解释详细说明这一点?

提前致谢.

c++ memory arrays dynamic

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

C++比较c字符串的麻烦

我已经编写了以下代码,但是当我更改它时,第二个代码段将无效.

int main( int argc, char *argv[] )
{
  if( argv[ 1 ] == "-i" )   //This is what does not work
     //Do Something
}
Run Code Online (Sandbox Code Playgroud)

但是如果我这样编写代码就行了.

int main( int argc, char *argv[] )
{
  string opti = "-i";

  if( argv[ 1 ] == opti )   //This is what does work
     //Do Something
}
Run Code Online (Sandbox Code Playgroud)

是因为字符串类将==作为重载成员,因此可以执行此操作吗?

提前致谢.

c++ string c-strings

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

Qt 椭圆边框变细

我试图在 Qt 中绘制一个椭圆,边缘的边框在某些地方变薄了。

在此处输入图片说明

这是代码:

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 3));
painter.drawEllipse(event->rect());
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢。

c++ qt border ellipse

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

将Bourne Shell变量传递给cut命令

我正在尝试执行以下操作.

foo="foo:foo1"
cc= `$foo | cut -f2 -d:`
Run Code Online (Sandbox Code Playgroud)

我理解为什么这不起作用,但我不知道这样做.

提前致谢.

unix variables shell scripting sh

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