gpt4 book ai didi

c++ - 类构造函数 : Incomplete type is not allowed (in member list) - VS C++ w/QT

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:39 26 4
gpt4 key购买 nike

我在将这个新类/ header 添加到这个预先存在的项目时遇到了问题。该项目在VS中,用C++编写,并与QT集成。我一直收到“没有合适的默认构造函数可用”的错误,并且智能感知在构造函数的成员列表中突出显示 m_Test(new Proj::Foo) 并说“不完整的类型是不允许。”

假设项目名称是 Proj,类名称是 Foo。

foo.h

#ifndef FOO_H
#define FOO_H

#include "custompanel.h"

class ParameterInterface;
class IsdbServiceInterface;

namespace Proj
{
class Foo;
}

class Foo : public CustomPanel
{
Q_OBJECT

public:
explicit Foo(QWidget *parent = 0);
~Foo();

private:
Proj::Foo* m_Test;
};
#endif

foo.c

#include "foo.h"

Foo::Foo(QWidget *parent) : CustomPanel(parent), m_Test(new Proj::Foo)
{
m_Test->setupUi(this);
}

Foo::~Foo()
{
delete m_Test;
}

我已经根据项目中的其他工作示例对此进行了建模,我没有想到为什么我的会有所不同。有任何想法吗?我想知道我是否在这里遗漏了一些基本的东西。感谢您查看。

最佳答案

您的 Foo 类定义不在 Proj 命名空间中,但是您的 m_test 变量正在使用 Proj::Foo 类。

实际上你有两个类:FooProj::FooProj::Foo 没有定义,只是一个转发声明。

要修复,请删除命名空间,或展开命名空间大括号以包含 Foo 定义。

关于c++ - 类构造函数 : Incomplete type is not allowed (in member list) - VS C++ w/QT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31150281/

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