文档章节

C++函数重载无聊2

首席吹牛官
 首席吹牛官
发布于 2015/05/22 12:50
字数 187
阅读 4
收藏 0

                  先看一段代码

#include <iostream>

using namespace std;


template<typename elemType, size_t nSize>
class CRefAsParam

{
public:
    typedef elemType MyArray[nSize];
    static void RefAsParam(int p[]) {
       

    }
    static void RefAsParam(MyArray & aRR) {
        
    }
};

int main()

{
    typedef CRefAsParam<int, 10> MyType;
    MyType::MyArray a = {20, 30, 77};
    MyType::RefAsParam(a);
    return 0;
}
编译就不能通过

编译出错:

/home/zhou/C++/Re/main.cpp:36: 错误:call of overloaded 'RefAsParam(CRefAsParam<int, 10u>::MyArray)' is ambiguous

ambiguous:adj. 模糊不清的;引起歧义的

在看编译器的认识

../Re/main.cpp:16:17: note: static void CRefAsParam<elemType, nSize>::RefAsParam(int*) [with elemType = int, unsigned int nSize = 10u]

../Re/main.cpp:21:17: note: static void CRefAsParam<elemType, nSize>::RefAsParam(elemType (&)[nSize]) [with elemType = int, unsigned int nSize = 10u, CRefAsParam<elemType, nSize>::MyArray = int [10]]

重载是在编译期完成的(多态是在运行期完成的),编译时,选择时不能决定,所以报错。




本文转载自:http://blog.csdn.net/zhx6044/article/details/8565351

首席吹牛官
粉丝 9
博文 368
码字总数 191938
作品 0
闵行
程序员
私信 提问
SWIG入门5: C/C++初级特性3

1 函数重载 函数重载这个特性是C++对于C的一个最重要的扩充属性了。对于C语言来说,不可能有两个SYMBOL的名字是相同的,但C++语言为了实现函数重载的这个特性,讲函数的SYMBOL名改成了 ‘函数...

costaxu
2012/08/26
633
0
C++中的NULL和nullptr的区别

C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: 实际上在C语言中,NULL通常被定义为如下: 也就是说NULL实际上是一个void 的指针,然后吧void 指针赋值给int 和foo...

dukeke
2018/01/08
0
0
linux下使用 boost.python 调用c++动态库

最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面。测试办法是让 robot framework 通过 SSHLIbrary 库执行远程机器上...

问天小凯
2018/08/01
981
0
extern “C”的作用详解

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数...

天王盖地虎626
01/25
15
0
C++ 0x 之左值与右值、右值引用、移动语义、传导模板

左值与右值 左值与右值的概念要追溯到 C 语言,由 C++ 语言继承了上来。C++ 03 3.10/1 如是说:“Every expression is either an lvalue or an rvalue.”左值与右值是指表达式的属性,而非对...

雅各宾
2013/11/27
231
2

没有更多内容

加载失败,请刷新页面

加载更多

关于早起

早起是非常好的事情,但是像如果前一天睡得晚,或者第二天早上是非常冷的时候,那就不是很美好了。 但是本身早起是一件非常棒的事情,我记得我每次早起 如果不觉得困的话,世界是那么安静,脑...

T型人才追梦者
14分钟前
4
0
Java输入输出

JDK中的InputStream/OutputStream构成了IO输入输出继承层次的基础。它们都是面向字节序列的,每次可以从序列中读入或者写出一个字节或者指定大小的字节数组。但是面向字节流的输入输出不便于...

ytuan996
31分钟前
4
0
Xamarin图表开发基础教程(9)OxyPlot框架

Xamarin图表开发基础教程(9)OxyPlot框架 OxyPlot组件构成 OxyPlot组件主要由两个类构成,分别为PlotView和PlotModel。这两个类我们在上文中也使用到了。本节将讲解介绍这两个类。 1.图表视...

大学霸
36分钟前
4
0
协议栈

一、关键技术点分析 不同服务在性能上适用不同协议进行传输,如对接异构第三方服务时,通常选择HTTP/Restful等公有协议;而对于内部不同模块之间的服务调用,一般选择性能较高的二进制私有协...

edwardGe
44分钟前
7
0
新建时隐藏按钮,显示明细时显示

在InitControl()中 if (saTableKeys != null) { rpgDesign.Visible = true; rpgPrint.Visible = true; }......

_Somuns
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部