小编shu*_*e87的帖子

使用非默认构造函数初始化成员类

我正在尝试创建一个包含textPanel类的SimpleWindow类的gui:

class textPanel{
    private:
        std::string text_m;

    public:
        textPanel(std::string str):text_m(str){}
        ~textPanel();
};


class SimpleWindow{
    public:
        SimpleWindow();
        ~SimpleWindow();
        textPanel text_panel_m;
};

SimpleWindow::SimpleWindow():
        text_panel_m(std::string temp("default value"))
{
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用const char*初始化text_panel_m,它将转换为std :: string,而不需要创建另一个带有const char*的构造函数.我应该用const char*作为参数创建另一个构造函数吗?如果我这样做有没有办法减少使用c ++ 0x的冗余构造函数的数量?

使用上面的方法,我在初始化text_panel_m成员变量时遇到了困难.g ++给了我以下错误:

simpleWindow.cpp:49: error: expected primary-expression before ‘temp’
simpleWindow.cpp: In member function ‘bool SimpleWindow::drawText(std::string)’:
Run Code Online (Sandbox Code Playgroud)

如何在不使用默认构造函数的情况下初始化text_panel_m成员变量?

c++ initialization class

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

c ++跨平台方式定义64位无符号整数

现在我正在研究一个在代码的许多部分中广泛使用64位无符号整数的项目.到目前为止,我们只使用gcc 4.6编译,但我们现在将一些代码移植到Windows.这些无符号整数是64位宽是至关重要的.有人建议我们可以使用long long但是如果long long大于64位并不好,我们实际上希望保证它会是64位并写一些类似static_assert(sizeof(long long) == 8)代码的东西.

定义类似uint64的最佳方法是什么,它将在gcc和msvc之间进行编译,而不需要在任何地方使用不同的代码语法?

c++ gcc visual-c++

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

如何在C中维护字符串与其索引之间的映射?

我有一个枚举Eg.

enum {
APPLE,
MANGO,
BANANA
}
Run Code Online (Sandbox Code Playgroud)

和相应的字符串数组

char fruits[] = 
{
 "apple",
 "mango",
 "banana"
}
Run Code Online (Sandbox Code Playgroud)

我需要检索字符串的索引,因为我有字符串.因此,如果字符串是苹果,我需要得到0,依此类推.[ Enum另外,可能有助于解决方案]

是否有一种优雅的方式,保存[apple,0],[banana,1]简短,我可以用作宏.我不需要像哈希表那样冗长的东西.可以Enum协助映射吗?

c

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

无法使用种子生成高斯分布

我正在尝试在 Visual Studio C++ 2010 中进行高斯分布。我希望每次运行时都有不同的结果。但是当我运行此代码三次时,结果是相同的:

#include <iostream>
#include <random>
int roundnew(double d)
{
  return floor(d + 0.5);
}
int main()
{
    std::default_random_engine generator;
    std::normal_distribution<double> distribution(10,1);

    for (int n = 0; n < 12; ++n) {
       printf("%d\n",roundnew(distribution(generator)));
    }

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

结果是

10
9
11
9
10
11
10
9
10
10
12
10
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?我的代码中需要种子值,对吧?运行代码即可看到结果

c++ random visual-studio-2010 c++11

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

MSVC 10基于环路的范围

目前在我们正在开发的一个大型c ++项目中,我们有一堆新的循环样式,如下所示:

for (auto& value : values)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我们一直在使用gcc 4.6进行编译.最近一些代码库被移植到Windows,一些开发人员希望在msvc ++ 10中编译,但似乎还没有完全支持新的for循环语法.

非常希望不必重写所有出现此语法的地方.

解决这个问题的最佳方法是什么?

更新:看起来MSVC11中已解决此问题.

c++ visual-c++ c++11

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

rand()返回高于我的max c ++的int

所以我希望我不是在问一些愚蠢的事情.

我希望我的程序在点击一个按钮时暂停从2000到5999的随机数量的ms,所以这里是行:

void ExpNatDlg::OnBnClickedBack()
{
   int delayRand;
   delayRand = (int)rand() % 6000 + 2000;
   Sleep(delayRand);
}
Run Code Online (Sandbox Code Playgroud)

为了检查我得到的延迟,我将它们打印在一个文件上,我不知道为什么,我有时会得到超过7000毫秒的延迟...

我不知道我错过了什么!谢谢你的帮助!

c++ random

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

列出命名空间包的所有子包

Python 具有创建命名空间包的能力。如何获取命名空间下已安装软件包的列表?

即类似:

import namespace_package
dir(namespace_pageage)
Run Code Online (Sandbox Code Playgroud)

python setuptools namespace-package

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

初始化列表std :: pair

有没有初始化的方法std::vectorstd::pair<int,int>在构造函数初始化列表中?我有一个std::vector<std::pair<int,int> >,我想初始化一定数量的对(0, 0).例如,我可能想要为(0, 0)一个类中的成员初始化3对.我该怎么做呢?

c++ stl

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

在python中将modulo应用于list的最惯用的方法

目前我有一个列表,其中包含一些非重复正整数 a = [1,2,6,15,19]

什么是最惯用的方法来创建一个返回一个新列表的函数,该列表是在输出%xa没有任何重复元素的情况下获取每个元素的模数的结果?

具体来说,我希望没有重复的元素f(a,x)返回[1%x,2%x,6%x,15%x,19%x].

例如f([1,2,6,15,19],4)会返回[1,2,3]

python

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

Python从Java背景理解列表理解

我来自Java背景,刚开始使用Python.大多数事情都很容易上手,但我很难理解我刚刚发现的一种叫做列表理解的语言.这是什么在Python列表理解?这与Java中的语言结构相比如何?问题是它无处不在,几乎我在这里和那里找到的所有例子都使用它.

对于以下示例,请允许我了解其工作原理.

[x**2 for x in range(10)]
Run Code Online (Sandbox Code Playgroud)

然后就是这个.

[j + k for j in 'abc' for k in 'def']
Run Code Online (Sandbox Code Playgroud)

除此之外,我还在Stackoverflow上看到过这样的事情.

(x for x in (0,1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

还有这样的事情.

total = sum(x+y for x in (0,1,2,3) for y in (0,1,2,3) if x < y)
Run Code Online (Sandbox Code Playgroud)

这开始变得混乱,你能帮我吗?

python

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