关于C++自定义命名空间,今天验证了一下命名空间如何使用,和嵌套命名空间以及出现的bug。

  1. 如何自定义命名空间,实例如下:

insertion_sort.h和insertion_sort.cpp

#pragma once
#ifndef _INSERTION_SORT_
#define _INSERTION_SORT_ namespace insert{
class insertion_sort
{
public:
static void call(); //定义为类的静态函数,只是为了demo的时候方便调用
}; } #endif
#include<iostream>
#include"insertion_sort.h" void insert::insertion_sort::call()
{
std::cout<<"你调用的是插入算法"<<std::endl; //命名空间的使用和类相似 }

recursive.h和recursive.cpp

#pragma once
#ifndef _RECURSIVE_
#define _RECURSIVE_ namespace recur{
class recursive
{
public:
static void call();
};
} #endif
#include<iostream>
#include"recursive.h" void recur::recursive::call()
{
std::cout<<"你调用的是递归算法"<<std::endl; }

二者在主函数中的调用:

#include<iostream>
#include "insertion_sort.h"
#include"recursive.h" int main()
{ recur::recursive::call();
insert::insertion_sort::call(); }

2.嵌套命名空间

#pragma once
#ifndef _INSERTION_SORT_
#define _INSERTION_SORT_ namespace insert{
class insertion_sort
{
public:
static void call();
}; namespace hello{
void out()
{
std::cout<<"你现在调用的是hello函数"<<std::endl;
}
}
} #endif
//main.cpp
#include<iostream>
#include "insertion_sort.h" int main()
{ recur::recursive::call();
insert::hello::out(); }

当这样直接在VS2010上运行的时候,会出现bug:LNK1169: 找到一个或多个多重定义的符号,解决方法参考:http://blog.chinaunix.net/uid-25498312-id-4254097.html,我采用的是:.在项目->属性->链接器->命令行->附加选项中加   /force

C++自定义命名空间的更多相关文章

  1. android 自定义命名空间

    一.统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).自定义一个View的方法步骤如下:1.首先,在values文件夹下定义一个att ...

  2. 如何使用Jquery自定义命名空间namespace

    // 把生成命名空间的方法绑定在jQuery上 jQuery.namespace = function () { var a = arguments, o = null, i, j, d; for ( ...

  3. android 自定义命名空间 http://schemas.android.com/apk/res-auto

    XML中用 xmlns="http://schemas.android.com/apk/res-auto" 获取自定义属性值: public static String NAMES ...

  4. Android 自定义 attr

    好纠结,弄了一个下午老是报错如是总结一下安卓自定视图和自定义属性. (一)自定义属性 在Values文件下建立一个attrs.xml文件,attr的format可以参考:http://www.cnbl ...

  5. 基于Spring的可扩展Schema进行开发自定义配置标签支持

    一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里 ...

  6. VS2010 添加服务引用以后点不出引用服务的命名空间

    声明:本次我遇到的仅是这类情况中的其中一个个例,不要拘泥于些噢! 问题描述: 1.我建了一个新项目,不引用服务前是好的,可以打点点出任何已有有命名空间,但是引用服务以后就是点不出服务的命名空间. 2. ...

  7. JAXB玩转命名空间

    声明:如果你正在发愁xml命名空间及其前缀问题,那么请继续,否则请跳过 本文讲解使用jaxb结合dom4j的XMLFilterImpl过滤器实现序列化和反序列化的完全控制 主要实现以下功能 序列化及反 ...

  8. SilverLight命名空间详解-新手入门

    1.核心命名空间 1.xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"是silverlight的核 ...

  9. spring schema自定义

    今天看了一下分布式服务框架的那本书,于是里面提到了spring schema的自定义,于是去简单的了解了一下 参考资源:spring schema扩展: http://www.yihaomen.com ...

随机推荐

  1. C#中Abstract和Virtual 【转】

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在 ...

  2. opengl笔记——旋转,一段代码的理解

    重看:opengl笔记——OpenGL好资料备忘 在找到这段代码,对理解opengl旋转很有帮助 ... glPushMatrix(); // initialze ModelView matrix g ...

  3. java整合easyui进行的增删改操作

    首先发一下效果图 显示全部用户信息 加入用户信息 删除用户信息 编辑用户信息 以下就来介绍一下easyui的crud,在java中是怎么与后台进行交换的 前台html页面,我将它命名为crud1.ht ...

  4. js函数设计原则

    一般认为函数指具有返回值的子程序,过程指没有返回值的子程序.C++中把所有子程序成为函数,其实那些返回值为void的 函数在语义上也是过程.函数与过程的区别更多是语义上的区别,而不是语法的区别. 语言 ...

  5. javascript模式——Factory

    Facotry模式是一种创建型模式,他不同于一般编码习惯,显示的调用各个构造函数.Factory模式是提供一个通用的接口来创建对象. 一个Factory模式压缩所有对象创建的方式,降低这个工厂与其它对 ...

  6. linux遇见的问题

    我在/usr 文件夹下把hadoop-1.2.1文件夹改名为hadoop,不过hadoop已经存在了.这样就覆盖了.可是课件被占用了,可见没有真的删除掉. 怎么把消失的hadoop真正删除呢?

  7. js 正则表达式验证 整理

    1.验证首字符是英文字母: var str="123"; var reg=/^[a-zA-Z]/; if(!reg.test(str)){ alert(str+"应以字母 ...

  8. 模拟app上商品详情点击图片放大并且可以切换大图

    主要使用swiper插件,这里使用各小技巧,就是用两个swiper容器,点击一个小图容器,去让大图容器展示出来 小图容器 <div class="q_banner"> ...

  9. 怎查看linux系统的位数

    # uname -a x86_64则说明你是64位内核, 跑的是64位的系统. i386, i686说明你是32位的内核, 跑的是32位的系统

  10. VS 2012 插件卸载(删除自己安装的插件)

    给VS 装了一个插件,装完之后感觉别扭,所以想卸载,[工具]--> [扩展和更新]-->[找到想要卸载的插件点击一下就会出现禁用或卸载]