C ++嵌套类-将实现移动到其他文件

rcplusplus

我正在尝试学习如何使用PIMPL习惯用法,因为它减少了编译依存关系,建议您这样做。所以我有基本上看起来像这样的代码。

oo

class Foo
{
public:
    Foo();
private:
    class FooImpl;
    std::unique_ptr<FooImpl> impl;
}

Foo.cpp

Foo::Foo():
impl(new FooImpl)
{
}

class Foo::FooImpl
{
public:
    FooImpl();
}

但是,现在我想像使用一样FooImpl::FooImpl()在一个单独的.cpp文件中进行定义Foo::Foo(),但是我将如何去做呢?

编辑:我已经四处移动以获取下面的代码,但是现在初始化impl给了我一个不完整的类型编译错误。

oo

class Foo
{
public:
    Foo();
private:
    class FooImpl;
    std::unique_ptr<FooImpl> impl;
}

Foo.cpp

#include "Foo.h"

Foo::Foo():
impl(new FooImpl)
{
}

FooImpl.cpp

#include "Foo.h"

class Foo::FooImpl
{
public:
    FooImpl();
}
大尾狼

我的解决方案是在Foo类中保留FooImp的定义。

让所有班级成员在那里。然后FooImp.cpp包含Foo.h并实现所有非内联函数。

我是这样工作的:

oo

class Foo
{
public: // ctor & dtor
    Foo();
    ~Foo();

private: // nested class
    class FooImp
    {
    public:
        FooImp();
        ~FooImp();
    };

private: // member variable
    std::unique_ptr<FooImpl> impl;
};

Foo.cpp

#include "Foo.h"
Foo::Foo()
{
}
Foo::~Foo()
{
}

FooImp.cpp

#include "Foo.h"
Foo::FooImp::FooImp()
{
}
Foo::FooImp::~FooImp()
{
}

它编译良好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将嵌套文件夹的所有文件移动到其他文件夹

来自分类Dev

分隔的头文件中的C ++嵌套类

来自分类Dev

将数据从嵌套的 c# 类导出到 csv 文件

来自分类Dev

C ++在实现模板化嵌套类时遇到麻烦

来自分类Dev

C ++使用外部嵌套结构实现类函数

来自分类Dev

C ++嵌套类访问

来自分类Dev

C ++嵌套类

来自分类Dev

嵌套类崩溃C ++

来自分类Dev

嵌套类-将声明与C ++中的定义分开

来自分类Dev

将嵌套的 JSON 反序列化为 C# 类

来自分类Dev

如何将包含所有嵌套数据的Firebase文档移动到其他集合?

来自分类Dev

嵌套类与单独的类文件

来自分类Dev

C++ 嵌套模板类

来自分类Dev

类模板声明中的C ++嵌套类

来自分类Dev

将带有Glacier存储类的S3文件移动到其他文件夹

来自分类Dev

C ++从类访问结构以及实现图的其他问题

来自分类Dev

C#WPF-将值从click事件传递到其他类文件

来自分类Dev

C ++ 03通过构造函数将向量移动到类成员中(移动语义)

来自分类Dev

将嵌套的类写到plist

来自分类Dev

将嵌套类型传递给父类,而无需在C ++ 20中重复自己(DRY)

来自分类Dev

将嵌套类型传递给父类,而无需在C ++ 20中重复自己(DRY)

来自分类Dev

如何从其他文件引用C#类?

来自分类Dev

如何从其他文件引用C#类?

来自分类Dev

其他类文件的Visual C#访问项

来自分类Dev

从其他文件 C++ 从模板类调用静态方法

来自分类Dev

私有嵌套类C ++的实例

来自分类Dev

C#序列化嵌套类

来自分类Dev

在C#中引用嵌套的类对象

来自分类Dev

如何向Lua注册C ++嵌套类