我有以下代码:
Func<string, bool> comparer = delegate(string value) {
return value != "0";
};
Run Code Online (Sandbox Code Playgroud)
但是,以下内容无法编译:
var comparer = delegate(string value) {
return value != "0";
};
Run Code Online (Sandbox Code Playgroud)
为什么编译器无法弄清楚它是Func<string, bool>什么?它需要一个字符串参数,并返回一个布尔值.相反,它给了我错误:
无法将匿名方法分配给隐式类型的局部变量.
我有一个猜测,那就是如果编译var版本,如果我有以下内容,它将缺乏一致性:
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
return false;
};
Run Code Online (Sandbox Code Playgroud)
上面没有意义,因为Func <>只允许最多4个参数(在.NET 3.5中,这就是我正在使用的).也许有人可以澄清这个问题.谢谢.
我一直在读C中的OOP,但我从来不喜欢你不能在C++中拥有像你这样的私人数据成员.但后来我想到你可以创建2个结构.一个在头文件中定义,另一个在源文件中定义.
// =========================================
// in somestruct.h
typedef struct {
int _public_member;
} SomeStruct;
// =========================================
// in somestruct.c
#include "somestruct.h"
typedef struct {
int _public_member;
int _private_member;
} SomeStructSource;
SomeStruct *SomeStruct_Create()
{
SomeStructSource *p = (SomeStructSource *)malloc(sizeof(SomeStructSource));
p->_private_member = 42;
return (SomeStruct *)p;
}
Run Code Online (Sandbox Code Playgroud)
从这里你可以将一个结构投射到另一个结构.这被认为是不好的做法吗?还是经常这样做?
我在客户端和Django服务器之间发送信息,我想使用JSON.我发送简单的信息 - 字符串列表.我试过用django.core.serializers,但是当我做的时候,我得到了
AttributeError: 'str' object has no attribute '_meta'
Run Code Online (Sandbox Code Playgroud)
看来这只能用于Django对象.如何序列化简单的Python对象?
这个问题出于好奇.是否有区别:
public abstract class MyClass
{
public MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class MyClass
{
protected MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我希望能够使用模板推导来实现以下目标:
GCPtr<A> ptr1 = GC::Allocate();
GCPtr<B> ptr2 = GC::Allocate();
Run Code Online (Sandbox Code Playgroud)
而不是(我现在拥有的):
GCPtr<A> ptr1 = GC::Allocate<A>();
GCPtr<B> ptr2 = GC::Allocate<B>();
Run Code Online (Sandbox Code Playgroud)
我目前的Allocate功能如下所示:
class GC
{
public:
template <typename T>
static GCPtr<T> Allocate();
};
Run Code Online (Sandbox Code Playgroud)
这将是可能敲掉多余的<A>和<B>?
这段代码出了什么问题,为什么我得错了答案:
class X
{
private:
const int a;
const int& b;
public:
X(): a(10) , b(20)
{
// std::cout << "constructor : a " << a << std::endl;
// std::cout << "constructor : b " << b << std::endl;
}
void display()
{
std::cout << "display():a:" << a << std::endl;
std::cout << "display():b:" << b << std::endl;
}
};
int
main(void)
{
X x;
x.display();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会给我结果
display():a:10
display():b:1104441332
Run Code Online (Sandbox Code Playgroud)
但是如果我删除默认构造函数中的注释2行,它给出了正确的结果
constructor : a 10
constructor : b 20 …Run Code Online (Sandbox Code Playgroud) 我不确定endian是否是正确的词,但..
我一直在解析PNG文件,我注意到所有的整数值都是大端的.这是真的?
例如,宽度和高度作为32位无符号整数存储在PNG文件中.我的图像是16x16,在文件中存储为:
00 00 00 10
Run Code Online (Sandbox Code Playgroud)
应该是什么时候:
10 00 00 00
Run Code Online (Sandbox Code Playgroud)
这是真的还是我缺少的东西?
有什么意义
enum SomeEnum : byte // <----
{
SomeValue = 0x01,
...
}
Run Code Online (Sandbox Code Playgroud)
当你必须进行转换只是为了将它分配给与枚举基础类型相同类型的变量?
byte b = (byte)SomeEnum.SomeValue;
Run Code Online (Sandbox Code Playgroud) 例如,做:
wchar_t x;
Run Code Online (Sandbox Code Playgroud)
翻译成:
unsigned short x;
Run Code Online (Sandbox Code Playgroud) 我有一个自动指针类,在构造函数中我传入一个指针.我希望能够从新的[]在构造函数中分离出来的新,这样我可以正确地调用删除或析构函数删除[].这可以通过模板专业化来完成吗?我不想在构造函数中传入一个布尔值.
template <typename T>
class MyAutoPtr
{
public:
MyAutoPtr(T* aPtr);
};
// in use:
MyAutoPtr<int> ptr(new int);
MyAutoPtr<int> ptr2(new int[10]);
Run Code Online (Sandbox Code Playgroud)