gpt4 book ai didi

c++ - "missing type specifier"构造函数声明错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:45 24 4
gpt4 key购买 nike

我在 2 个不同的文件中有 2 个类:

正则矩阵.h:

#ifndef _RM_H
#define _RM_H
#include "SparseMatrix.h"
...
class RegMatrix{
...
RegMatrix(const SparseMatrix &s){...} //ctor
...
};
#endif

稀疏矩阵.h:

#ifndef _SM_H
#define _SM_H
#include "RegMatrix.h"
...
class SparseMatrix{
...
SparseMatrix(const RegMatrix &r){...} //ctor
...
};
#endif

在构造函数行上我得到了错误:

错误 C4430:缺少类型说明符 - 假定为 int。

错误 C2143:语法错误:在“&”之前缺少“,”

但是当我添加类声明时

class SparseMatrix;

在RegMatrix.h文件中

class RegMatrix;

在 SparseMatrix.h 文件中它工作正常。我的问题是,如果我有包含,为什么还需要它?10 倍。

最佳答案

你不能有循环#includes(一个文件#includes 另一个#includes 第一个文件)。向前声明其中一个类而不是 #include 将打破链条并允许它工作。声明类名允许您使用该名称而无需了解类的内部位。

顺便说一句,对循环#includes 的渴望是一种设计味道。也许您可以创建一个接口(interface),让这两个类可以依赖它?这样他们就不必相互依赖。

关于c++ - "missing type specifier"构造函数声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806525/

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