gpt4 book ai didi

c++ - 类型没有命名类型或错误 : field has incomplete type

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

我不确定为什么会收到此错误...“错误:字段‘config’的类型不完整”。我尝试做前向声明并使用#include 包含 header ...我只是想在 fInstance 中包含 fConfig...

#ifndef FINSTANCE_H
#define FINSTANCE_H

//#include "fConfig.h"
#include <vector>
#include <sys/types.h>
#include <string>

using namespace std;

class fConfig;

class fInstance
{
public:
pid_t pid;
fConfig config;
vector<string> notes;
vector<time_t> times;

fInstance();
virtual ~fInstance();
};

#endif // FINSTANCE_H





#ifndef FCONFIG_H
#define FCONFIG_H

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <sys/types.h>
#include <fcntl.h>
#include "JWDSFork.h"
#include "fInstance.h"

using namespace std;

class fConfig
{
private:
pid_t pid, w;

public:
pid_t cPid;
string name;

int group;
int instanceId;
int numInstance;
int tries;

bool reply;
bool debug;
bool service;
bool currentlyRunning;

time_t startTime;
time_t endTime;

string path;

fConfig();
virtual ~fConfig();

void start();
string intToString(int);
char* stringToChar(string);
};

#endif // FCONFIG_H

编辑:添加更改

#ifndef FINSTANCE_H
#define FINSTANCE_H

#include "fConfig.h"
#include <vector>
#include <sys/types.h>
#include <string>
using namespace std;

//class fConfig;

class fInstance
{
public:
pid_t pid;
fConfig* config;
vector<string> notes;
vector<time_t> times;

fInstance();
virtual ~fInstance();
};

#endif // FINSTANCE_H




#ifndef FCONFIG_H
#define FCONFIG_H

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <sys/types.h>
#include <fcntl.h>
#include "JWDSFork.h"
//#include "fInstance.h"

using namespace std;

class fConfig
{
private:
pid_t pid, w;

public:
pid_t cPid;
string name;

int group;
int instanceId;
int numInstance;
int tries;

bool reply;
bool debug;
bool service;
bool currentlyRunning;

time_t startTime;
time_t endTime;

string path;

fConfig();
virtual ~fConfig();

void start();
string intToString(int);
char* stringToChar(string);
};

#endif // FCONFIG_H

最佳答案

需要在fInstance.h中添加#include "fConfig.h",不需要包含fInstance.hfConfig.h 中,因为您似乎没有在 fConfig.h 中使用类型 fInstance

当您前向声明一个类型时,编译器不知道该类型的内存布局,因此它将该类型视为不完整类型,并且编译器无法执行任何它需要知道的操作该类型的内存布局。

你在前向声明后创建了一个 fConfig 的实例,为此编译器需要知道 fConfig 的内存布局,但因为你只是前向声明它,所以它不知道'知道这一点,因此提示。

关于c++ - 类型没有命名类型或错误 : field has incomplete type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10556007/

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