gpt4 book ai didi

c++ - 无法引用默认构造函数——这是VS中删除的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:58 26 4
gpt4 key购买 nike

我尝试编译来自 https://github.com/zcbenz/BPlusTree 的代码在 Visual Studio 2015 社区中。代码可以在gcc中编译,但是在VS中,我得到了

the default constructor of "bpt::internal_node_t" cannot be referenced -- it is a deleted function

结构是这样的:

struct internal_node_t {
typedef index_t * child_t;

off_t parent; /* parent node offset */
off_t next;
off_t prev;
size_t n; /* how many children */
index_t children[BP_ORDER];
};

bpt.cc中随处可见引用, 像这样

internal_node_t parent;

我真的不明白消息的意思。如何在VS中编译代码?

一些类型定义更新:

struct key_t {
char k[16];

key_t(const char *str = "")
{
bzero(k, sizeof(k));
strcpy_s(k, str);
}
};
typedef unsigned int size_t;

struct index_t {
key_t key;
off_t child; /* child's offset */
};

我使用 off_t<sys\types.h>和一个马可 #define bzero(ptr, size) memset(ptr, 0, size)对于 bzero

我还写了另一个这样的程序:

#include <sys/types.h>
#include <string.h>

#define bzero(ptr, size) memset(ptr, 0, size)

struct key_t {
char k[16];

key_t(const char *str = "")
{
bzero(k, sizeof(k));
strcpy_s(k, str);
}
};
struct index_t {
key_t key;
off_t child; /* child's offset */
};



struct internal_node_t {
typedef index_t * child_t;

off_t parent; /* parent node offset */
off_t next;
off_t prev;
size_t n; /* how many children */
index_t children[20];
};

int main() {
internal_node_t t;
}

这在 VS2015 中有效。

最佳答案

我发现依赖于 POSIX 类型的代码库不太可能在面向 Windows 的编译器中编译。也许你应该尝试像 Cygwin 这样的东西。

例如,off_tkey_t来自<sys/types.h> .作者甚至懒得包含这个 header ,给人一种可移植性的错觉。

注:VS2015确实有 off_t .似乎实际问题是 System V IPC( <sys/ipc.h> ,关心 key_t 的实际 header ),它是特定于 Linux 的。

关于c++ - 无法引用默认构造函数——这是VS中删除的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com