小编Mor*_*hul的帖子

c ++ functional,std :: function with generic parameter

我尝试编写一个forEach方法(我知道已经存在但我会自己尝试)

这是我的代码:

#include <iostream>
#include <array>
#include <functional>

using namespace std;

template<typename T, std::size_t SIZE>
void forEach(std::array<T, SIZE> array, function<void(int)> fun){
    for(auto const & object: array)
        fun(object);
}

int main()
{
    std::array<int, 4> num{1,2,3,4};

    forEach(num, [](int n) -> void { cout << n * n << endl;});

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

这很好用.

现在,当我更改forEach的第二个参数时function<void(int)> fun,function<void(T)> fun它不会编译,我得到错误:
no matching function for call to 'forEach(std::array<int, 4u>&, main()::<lambda(int)>)'

但是当我理解它T应该int在这个例子中.
我是否犯了一个思维错误?
为什么它不起作用?

当我这样做的时候它可以工作:

template<typename T, std::size_t SIZE>
void …
Run Code Online (Sandbox Code Playgroud)

c++

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

c ++ argv [1]以返回值9009终止程序

我有一个小代码来查看它argv的内容

#include <iostream>

using namespace std;
int main(int argc, char** argv){

    cout << "===================" << endl;
    cout << "argc: " << argc << endl << endl;
    cout << "argv[0]: " << argv[0] << endl << endl;
    cout << "argv[1]: " << argv[1] << endl << endl;
    //cout << "argv[2]: " << argv[2] << endl << endl; //Program crash
    cout << "===================" << endl;

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

当我启动没有参数的程序时:

argc1
argv[0]是执行路径
argv[1]应该超出范围,程序应该崩溃,但程序终止像我写return.如果我检查错误级别它是9009
如果我尝试访问argv[2]程序崩溃按预期 …

c++

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

相机如何在 Libgdx 和视口中工作

如果您使用 LibGdx,它很快就会来到相机和视口。如果您第一次使用相机和视口工作,您会遇到一些关于它如何工作以及如何使用它的问题。所以:

  • 如何在 LibGdx 中使用相机?什么是视口宽度和高度?
  • 什么是视口,我如何使用它以及它如何与相机一起工作?

java camera viewport libgdx

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

将if else语句的最后一个值赋给变量

我知道你可以像这样分配一个变量:

double y = 140;
int i = (y > 100) ? y / 2 : y * 2; //shorthand if else
std::cout << i << std::endl;  // 70
Run Code Online (Sandbox Code Playgroud)

或者用以下命令分隔的多个命令,:

double y = 140;
int i = (y > 100) ? (y /= 2, 5) : (y *= 2, 10);
std::cout << i << std::endl; // 5
std::cout << y << std::endl; // 70
Run Code Online (Sandbox Code Playgroud)

但是,我可以使用正常的if else语句执行此操作吗?

我试过这个:

int i = if(y > 100){
            y / 2;
        } else …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×3

camera ×1

java ×1

libgdx ×1

viewport ×1