//CArray.htemplate <class T>class CArray {public: CArray(T Initial,int nSize); void Show(const int nNumElems); virtual~CArray(){delete[ ] m_pArray;} T &operator [](int nIndex){return m_pArray[nIndex];}protected: T* m_pArray; int m_nSize;};//CArray.cpp#include "stdafx.h"#include "Array.h"template<class T>CArray<T>::CArray(T Initial,int nSize){ m_nSize=(nSize>1)?nSize:1; m_pArray=new T[m_nSize]; for(int i=0;i<m_nSize;i++) m_pArray[i]=Initial;}template<class T>void CArray<T>::Show(const int nNumElems){ for(int i=0;i<nNumElems;i++) cout<<m_pArray[i]<<' '; }#include "stdafx.h"#include "Array.h"int main(int argc, char* argv[]){ int arr[5]={1,2,3,4,5}; CArray<int> ar(0,5); ar.Show(4); return 0;} error LNK2001: unresolved external symbol "public: void __thiscall CArray<int>::Show(int)" (?Show@?$CArray@H@@QAEXH@Z)t3.obj : error LNK2001: unresolved external symbol "public: __thiscall CArray<int>::CArray<int>(int,int)" (??0?$CArray@H@@QAE@HH@Z)Debug/t3.exe : fatal error LNK1120: 2 unresolved externalsError executing link.exe.
C++,大佬们看下这里报错是为什么?可是这代码能AC啊?!
这两行主要是用在线段树上,因为 C++ 往往不使用类来实现线段树,而是通过数组来模拟实现。在线段树当中,如果某一个节点的 id 是 u,那么它的左孩子是 2 x u,右孩子的 id 是 2 x u + 1,用位运算来表示就是 u << 1 和 u << 1 | 1。define MEM(a,x) memset(a,x,sizeof a)#d...
如图,c++里为什么template还能这样用啊?为什么template尖括号里有...
非类型模板的典型应用就是数组长度定义,众所周知int a[N]这种语句中N必须是一个编译期常量否则无法通过编译,要实现定义不同长度的数组,就可以使用template<int T> void foo(){double a[T]}这样的写法,调用foo时必须传递一个编译期常量如10,如foo<10>(),即可在函数foo中创建一个长度为10的d...
这个C++程序,为什么第一个能输出正确结果,而第二个程序错误?
把个数当作参数传递进去,比如 void foo(int *a,int n);使用“数组引用+模板”,比如 template<size_t size>void foo(int (&a)[size]);这里的size就是数组元素个数,且是常数,会被编译器自动计算。用sizeof(a)\/sizeof(int)也会得到正确的值。不多说了。
c++怎么从类定义的数组中删除某一个元素?
template <class T> int remove_from_array(T *a, int n, int &l)\/\/从数组a中删除第n个元素。l为数组原始长度,引用传参,所以可以将新的长度带回主调函数。如果成功,函数返回0,否则函数返回-1。 { if(a == NULL || n<0 || l < 0 || n>=l)return -1; int i;...
C++中, 类的私有数据成员在定义的时候不能进行初始化吗?
是的,C++中类的数据成员不管是不是私有的,都不能进行初始化。因为类就相当于一个数据的模板,是一种自定义组合的新数据类型,而不是一个变量。当程序声明一个类的时候,事实上并没有为程序申请存储空间,只有用这个类定义一个类对象的时候,才申请空间。连空间都没有,当然不能像定义变量一样的...
在C++中可以定义 char a[]吗,他和char a[n]有什么区别?
1、如果是定义一个数组(元素个数给出),这两个没有区别。2、如上楼所说,如果没给定【数组】,是不能直接用这两个定义。3、定义不知道元素个数的数组时,你首先必须得申请个足够大的内存空间,此时,用char a[n]要好,N要足够大,则在编写程序前要 vector array(len),这就申请了变长数组;...
c++编写动态数组类 TArray,构造函数里指针数组初始化问题
\/\/ 把c中的10个元素复制到a中a.Print(); \/\/ 打印a中的元素TArray c(a); \/\/ 创建了一个与a一样的c数组b = a; \/\/ 把a的内容复制给ba.SetElem(0,6); \/\/ 把第0个元素的值重新赋值为6b.Exchange(4,2); \/\/ 交换b中第4个和第2个元素的内容b.Print(); \/\/ 打印b中的元素a.Pr...
有一段C++程序如下,只是摘抄了程序中间部分,哪位大神能帮忙解释以下几个...
result_point是定义的一个类型, 就跟int float 差不多,具体要看头文件。vector<?> result 这种是 vector模板的用法,意思是动态数组 vector<int> 就是int的动态数组 vector<float> 就是 float的动态数组 vector<xxx> 就是 xxx的动态数组。insert_result(result, p); 有什么功能,看这个函数的...
如何在C++中获得完整的类型名称
一、如何检查C++中的类型我们需要一个泛型类,用特化\/偏特化机制静态检查出C++中的各种类型,并且不能忽略掉类型限定符(type-specifiers)和各种声明符(declarators)。 先来考虑一个最简单的类模板: template <typename T>struct check{ \/\/ ...};假如在它的基础上特化,需要写多少个版本呢?我们可以稍微实现下试...
求教:在c++中如何用类实现一个简单的单向链表??
小弟目前在学C++(类的有关知识),书本上有一个实现单向链表的例子,我怎么看都不能理解关键的地方,望大家帮我讲解一下(最好详细),先写出例子的代码,再说我不明白的地方吧:例子是以盒子(Box)和货车(truck)为指导,在例子中,定义一个Box类,然后用另一个package类实现每个package对象打包一个Box对象和指向下一个...