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

标签 c++ qt visual-studio-2012 constructor member

我在向这个现有项目添加这个新类/ 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::Foo,其中 Proj::Foo 没有定义,只是一个转发声明。

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

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

相关文章:

c++ - 是否可以在 Windows 上静态链接 Qt::phonon?

sql-server-2008 - 使用 SSDT Publish (.dacpac) 部署非空外键架构更新

c++ - 集合上的输出迭代器 : assign and increment iterator

仅接受某些类型的 C++ 模板

c++ - 链接错误 : QtCore. framework/Versions/4/QtCore for architecture x86_64

eclipse - 将 CMake/Visual Studio 项目移植到 Eclipse

c# - 单元测试执行期间 Windows 8 Appx 安装超时

c++ - 没有对具有 const 参数的模板函数的匹配函数调用

c++ - 类 X 的配置类,它应该嵌套在 X 中还是 X 之外?

qt - 为什么我的 Qt5 语言翻译未加载?