从代理标头

时间:2017-07-26 09:07:59

标签: c++ namespaces redefinition

我有一个名为" access"在项目中。这实际上是在项目内的许多地方使用的。目前我正在为这个项目编写单元测试用例。我的单元测试,io.h文件包含在UT框架工作中。这个io文件包含名为" access"的c函数。因此,当我尝试同时包含io文件和我的一个项目文件时,我得到了重新定义错误" access"。

所以我尝试使用代理头来解决上述问题。对于代理头,我在命名空间中包含了框架工作头文件,以避免重新定义错误。

但该框架工作文件访问一些全局命名空间。所以我遇到了更多问题。有没有办法在不重命名命名空间的情况下解决问题。

这是我的示例代码。

#pragma once

#include "io.h"
#include <iostream>

class Class01
{
public:
    Class01(void);
    ~Class01(void);
    void function() {
        std::cout<< " Write something";}

};

#pragma once

namespace access
{

  class Class02
  {
  public:
    Class02(void);
    ~Class02(void);
  };
}

代理标题

  #pragma once

    namespace sample
    {
        #include "Class01.h"
    };
    #include "Class02.h"


// NamespaceRedef.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//#include "Class02.h"
//#include "Class01.h"
#include "proxyHeader.h"

using namespace sample;

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

编译代码时,出现以下错误......

  

1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):error C2039:&#39; acosf&#39; :不是“全局命名空间”的成员。&#39;
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):错误C2873:&#39; acosf&#39; :符号不能用于使用声明
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):error C2039:&#39; asinf&#39; :不是“全局命名空间”的成员。&#39;
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(19):错误C2873:&#39; asinf&#39; :符号不能用于使用声明
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atanf&#39; :不是“全局命名空间”的成员。&#39;
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atanf&#39; :符号不能用于使用声明
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atan2f&#39; :不是“全局命名空间”的成员。&#39;
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atan2f&#39; :符号不能在using声明中使用crosoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atanf&#39; :符号不能用于使用声明
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2039:&#39; atan2f&#39; :不是“全局命名空间”的成员。&#39;
  1&gt; c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ cmath(20):错误C2873:&#39; atan2f&#39; :symbol不能在using-declaration中使用

0 个答案:

没有答案