Include 是否可以只在一个类中包含代码?
我希望我能解释我自己 好的,我有下一个: 文件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,所有其他标题都使用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所建议的那样。这会有所帮助
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()
}
}