Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我的代码在函数作用域之外时,为什么会出现编译器错误“未命名类型”?_C++_C++11_Random_Compiler Errors_Std - Fatal编程技术网

C++ 当我的代码在函数作用域之外时,为什么会出现编译器错误“未命名类型”?

C++ 当我的代码在函数作用域之外时,为什么会出现编译器错误“未命名类型”?,c++,c++11,random,compiler-errors,std,C++,C++11,Random,Compiler Errors,Std,当我偶然发现这个错误时,我正在测试一个通过在随机位置生成对象来构建的游戏引擎,我不理解这个错误 foo.h: 我正在使用Eclipse和MinGW。我不知道为什么它会把r_gen解释为一种类型。此外,将上述代码包装在一个函数中,名称空间foo中的所有内容都允许它正确编译 我有一个理论问题和一个实际问题: 理论为什么我的示例代码不编译? 我应该如何安排这段代码,使其只在生成器中播种一次? 只需更改前两个定义的顺序,并从种子构造生成器: auto r_seed = std::chrono::syst

当我偶然发现这个错误时,我正在测试一个通过在随机位置生成对象来构建的游戏引擎,我不理解这个错误

foo.h:

我正在使用Eclipse和MinGW。我不知道为什么它会把r_gen解释为一种类型。此外,将上述代码包装在一个函数中,名称空间foo中的所有内容都允许它正确编译

我有一个理论问题和一个实际问题:

理论为什么我的示例代码不编译? 我应该如何安排这段代码,使其只在生成器中播种一次?
只需更改前两个定义的顺序,并从种子构造生成器:

auto r_seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine r_gen(seed);

您不能在函数外执行这样的语句。@n.m至少也有类似的答案。请重新打开。是的,有很多答案说明了为什么它不能编译。但没有一个简单的解决方案能让它起作用。
#include <iostream>
#include "foo.h"

int main() {

    // Actually run the program

}
error: 'r_gen' does not name a type
r_gen.seed(r_seed);
^~~~~
auto r_seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine r_gen(seed);