zoukankan      html  css  js  c++  java
  • c++关于namespace的**.obj **** already defined in ***.obj问题

    之前用namespace很多,不过内部都包含了class,函数和变量都是在类中,因此也没遇到过这个问题,昨天不想再包含类了,于是直接在写为

    //CommonUse.h

    #pragma once

    #include "XXXX"

    namespace CommUse

    {

    std::string valueToString(unsigned int nValue)

    {
    char szChar[15];
    sprintf(szChar, "%l", nValue);
    return szChar;
    }

    }

    在两个不同的.cpp文件中使用了valueToString函数,结果编译链接阶段就出现了题中的错误,今天来了搜了一下,看了其他人说的解决方案,修改为

    //CommonUse.h

    #pragma once

    #include "XXXX"


    namespace CComUse
    {
    std::string valueToString(unsigned int nValue);

    }

    //CommonUse.cpp

    #include "CommonUse.h"

    namespace CComUse
    {
    std::string valueToString(unsigned int nValue)
    {
    char szChar[15];
    sprintf(szChar, "%l", nValue);
    return szChar;
    }
    }

    然后就OK了。

    错误原因:程序包含了两个相同的定义,即重定义,然而只能定义唯一的一个,因此可以在.h中只包含函数或者变量声明,在source文件中进行定义。

    http://stackoverflow.com/questions/6109224/c-namespace-member-access-in-different-files-how-to-how-namespace-std-imple

  • 相关阅读:
    Asp.Net上传大文件(页面超时)
    C#文件的大小
    设计模式简单工厂、工厂方法、抽象工厂方法
    设计模式迭代器模式
    Asp.Net下载文件
    设计模式桥接模式
    CSS尺寸(Dimensions)
    设计模式单件模式
    Android 换肤
    像QQtab切换效果的例子
  • 原文地址:https://www.cnblogs.com/playerboy/p/3867309.html
Copyright © 2011-2022 走看看