Include 是否可以只在一个类中包含代码?

Include 是否可以只在一个类中包含代码?,include,c++-cli,Include,C++ Cli,我希望我能解释我自己 好的,我有下一个: 文件A.h: 文件B.h: 是否可以仅在A.h中包含C.h 我的问题是,我包含的代码与常用函数有很多冲突。一个接一个地纠正冲突是不可取的,因为冲突太多了。另外,包含的C.h代码只是一个测试代码:在一些测试之后,我将删除包含行 有没有办法让我的包“冒泡” 先谢谢你 编辑:A.h和B.h位于同一命名空间上 是否可以仅在A.h中包含C.h 不,据我所知不是 如果您有名称冲突,只需在另一个名称空间中包含C.h,正如@user202729所建议的那样。这会有所帮助

我希望我能解释我自己

好的,我有下一个:

文件A.h:

文件B.h:

是否可以仅在A.h中包含C.h

我的问题是,我包含的代码与常用函数有很多冲突。一个接一个地纠正冲突是不可取的,因为冲突太多了。另外,包含的C.h代码只是一个测试代码:在一些测试之后,我将删除包含行

有没有办法让我的包“冒泡”

先谢谢你

编辑:A.h和B.h位于同一命名空间上

是否可以仅在A.h中包含C.h

不,据我所知不是

如果您有名称冲突,只需在另一个名称空间中包含C.h,正如@user202729所建议的那样。这会有所帮助

但我猜您在A中使用C进行测试,如果没有与C++Cli或B.h中的内容不兼容的实现,您就无法在A中的C中使用它

我们使用pimpl ideom指针来实现。 例子: c++/clr目前不允许直接包含do,这就是为什么有时不能像c.h一样使用希望使用的库,因为它们确实依赖于的支持

这是我的C.h,所有其他标题都使用

            struct LockImpl; // forward declaration of C.

            class C
            {
            public:
                C();
                virtual ~C();

            public:
                void Lock() const;
                void Unlock() const;
                LockImpl* _Lock;
            };
这是我在没有/clr的情况下编译的C.cpp

            #include <mutex>

            struct LockImpl
            {
                std::mutex mutex;
            };

            C::C() : _Lock(new LockImpl()) {}
            C::~C() { delete _Lock; }

            void C::Lock() const
            {
                _Lock->mutex.lock();
            }

            void C::Unlock() const
            {
                _Lock->mutex.unlock();
            }

尝试使用名称空间。C++建议,可以工作或not@user202729我忘了谈论我的名字空间。请看我附加在问题上的编辑行。我的意思是。
            struct LockImpl; // forward declaration of C.

            class C
            {
            public:
                C();
                virtual ~C();

            public:
                void Lock() const;
                void Unlock() const;
                LockImpl* _Lock;
            };
            #include <mutex>

            struct LockImpl
            {
                std::mutex mutex;
            };

            C::C() : _Lock(new LockImpl()) {}
            C::~C() { delete _Lock; }

            void C::Lock() const
            {
                _Lock->mutex.lock();
            }

            void C::Unlock() const
            {
                _Lock->mutex.unlock();
            }
#include "C.h"

public class A{
   C c;
   void someMethod()
   {
      c.Lock() // I used another template for a RAII pattern class.
      c.Unlock() 
   }
}