gpt4 book ai didi

c++ - 使用类成员变量时访问读取错误

转载 作者:行者123 更新时间:2023-11-30 03:11:04 25 4
gpt4 key购买 nike

我有一个在头文件中声明了私有(private)成员变量的类。在我的构造函数中,我传入一些文件名并使用这些名称创建其他对象。这很好用。但是,当我尝试添加另一个成员变量并在构造函数中对其进行初始化时,我遇到了访问读取冲突。我把代码发给了别人,在他的电脑上运行良好。知道哪里出了问题吗?

这是有问题的代码:

.h 文件:

class QUERYMANAGER {
INDEXCACHE *cache;
URLTABLE *table;
SNIPPET *snip;
int* iquery[MAX_QUERY_LENGTH];
int* metapointers[MAX_QUERY_LENGTH];
int blockpointers[MAX_QUERY_LENGTH];
int docpositions[MAX_QUERY_LENGTH];
int numberdocs[MAX_QUERY_LENGTH];
int frequencies[MAX_QUERY_LENGTH];
int docarrays[MAX_QUERY_LENGTH][256];
int qsize;



public:
QUERYMANAGER();
QUERYMANAGER(char *indexfname, char *btfname, char *urltablefname, char *snippetfname, char *snippetbtfname);
~QUERYMANAGER();

这是 .cpp 文件:

#include "querymanagernew.h"
#include "snippet.h"
using namespace std;



QUERYMANAGER::QUERYMANAGER(char *indexfname, char *btfname, char *urltablefname, char *snippetfname, char *snippetbtfname){
cache = new INDEXCACHE(indexfname, btfname);
table = new URLTABLE(urltablefname);
snip = new SNIPPET(snippetfname, snippetbtfname);

//this is where the error occurs
qsize = 0;


}

我完全不知道是什么原因造成的 - 有什么想法吗?

谢谢,bsg

最佳答案

建议,分解数组:

class QUERYMANAGER
{
// Snip
int* iquery[MAX_QUERY_LENGTH];
int* metapointers[MAX_QUERY_LENGTH];
int blockpointers[MAX_QUERY_LENGTH];
int docpositions[MAX_QUERY_LENGTH];
int numberdocs[MAX_QUERY_LENGTH];
int frequencies[MAX_QUERY_LENGTH];
int docarrays[MAX_QUERY_LENGTH][256];
int qsize;
// Snip
};

看起来你应该有另一个结构:

struct Info
{
int* iquery;
int* metapointers;
int blockpointers;
int docpositions;
int numberdocs;
int frequencies;
int docarrays[256];
};

QueryManager 现在看起来像:

class QueryManager
{
INDEXCACHE *cache;
URLTABLE *table;
SNIPPET *snip;
int qsize;
Info details[MAX_QUERY_LENGTH];
};

这可能有助于更好地封装主题。

关于c++ - 使用类成员变量时访问读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608805/

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