如何声明结构中的类模板,后来初始化?

问题描述 投票:-1回答:1

我想一个宽容叠层建模。我设为保持的下限(Layer)和公差范围的上限(tol[0])限制的结构tol[1]。我想生成tol[0]tol[1]之间的随机值,并将其分配给val

我实现声明uniform_real_distribution类模板的结构和main()初始化它,但我发现这让我觉得我不能使用类模板这样的编译过程中出现错误。

#include <random>

struct Layer {
    double tol[2];
    double val;
    std::string name;
    std::uniform_real_distribution<double> distribution;
};

int main() 
{
    Layer block;
    block.tol[0] = .240;
    block.tol[1] = .260;

    std::default_random_engine generator;
    block.distribution(block.tol[0],block.tol[1]);
    block.val = block.distribution(generator);

    return 0;
}

我碰到G ++以下错误:

error: no match for call to '(std::uniform_real_distribution<double>) (double&, double&)'
    block.distribution(block.tol[0],block.tol1[]);
                                                ^

我有想象中的那么我创造,所以我希望与结构分配相关联的几个Layer结构,但我不知道这是可能的了。

c++ c++11 random
1个回答
0
投票

在这个阶段,对象是已建成,所以你可以这样做:

block.distribution = std::uniform_real_distribution<double>(block.tol[0],block.tol[1]);

您也可以直接初始化结构:

Layer block{{.240,.260}, 0, "", std::uniform_real_distribution<double>(.240, .260)};
© www.soinside.com 2019 - 2024. All rights reserved.