小编cwa*_*cwa的帖子

如何将NULL指定为模板函数的指针类型参数

这显示了它的要点:

#include <utility>

class A {
public:
    A() { }
};

class B {
public:
    B() { }
};

typedef std::pair<A*, B*> ABPair;

int main(int argc, char* argv[])
{
    B* b = 0;               // no C2440
    ABPair p2(new A(), b);

    ABPair p1(new A(), 0);  // C2440

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

是否有更好的方法使p1声明工作而不仅仅是强迫演员,例如 ABPair p1(new A(), (B*)NULL)?这似乎是非常普遍的,并且会有一种"正确"的方式来做这件事.而且投射它不是正确的方法.

在VS 2010上,这是完整的错误:

1>ClCompile:
1>  test.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(163): error C2440: 'initializing' : cannot convert from 'int' to 'B *'
1>          Conversion from …
Run Code Online (Sandbox Code Playgroud)

c++

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

C# 表达式语法

我正在考虑Expression<Func<>>和 之间的区别Func<>,想知道是否可以将静态方法转换为表达式树,如下所示:

class Program
{
    static void Main(string[] args)
    {
        Func<int, int> t = x => hrm(x);
        Func<int, int> t2 = new Func<int, int>(hrm);

        // Works as expected:
        Expression<Func<int, int>> et = x => hrm(x);
        // Brokenness:
        Expression<Func<int, int>> et2 = new Func<int, int>(hrm);
    }

    static int hrm(int x)
    {
        return x + 9;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个“Func<>”有何特别之处,以至于它无法转换为表达式,而第一个“Func<>”可以转换为表达式?

c# expression-trees

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

标签 统计

c# ×1

c++ ×1

expression-trees ×1