c++ - 使用模板类-C++ 打印数组中的值

标签 c++ arrays class templates

嗨,我尝试为类创建一个模板来打印数组中的值。

#include<iostream>
using namespace std;

template <typename T>
class Array{
   public:
      Array(T array[], int arraysize){
         size=arraysize;
         _array=new T[size];
      }

      ~Array(){
         delete[] _array;
      }
      void print(){
         for(int i=0; i<size; i++){
            cout<<_array[i]<<' ';
         }
      }
      private:
         T *_array;
         int size;
};

int main(){
   int array1[5]={1,2,3,4,5};
   Array<int> a(array1,5);
   a.print();

   float array2[5]={1.012, 2.324, 3.141, 4.221, 5.327};
   Array<float> b(array2,5);
   b.print();

   string array3[]={"Ch1","Ch2","Ch3","Ch4","Ch5"};
   Array<string> c(array3,5);
   c.print();

   return 0;

}

这是代码,我想知道出了什么问题,因为它会打印出随机数。

最佳答案

该代码使用 new 创建模板的类成员 _array,但不会将其初始化为任何内容,这就是为什么会打印出随机垃圾。

构造函数确实接收参数数组,并使用该参数传递初始化的数组。但是,构造函数完全忽略该参数,并且不对其执行任何操作。

显然,您的意图是将模板构造函数作为参数接收的数组内容复制到 _array 中。但该代码丢失了。

array 参数的内容不会自行复制到 _array 中。您必须编写代码才能做到这一点。

关于c++ - 使用模板类-C++ 打印数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39501095/

相关文章:

c++ - SSL/TLS 协议(protocol)版本回退机制

ios - 构建时间段的数据模型

c++ - 使用 GCC 6.1 检测概念 TS

c++ - QString 和 stdstring 组合在 std::stringstream 中不起作用 - 编译错误

来自 mysql assoc 的 PHP 数组

php - 从php数组中提取数据

jquery - 让 CSS 类选择器覆盖 CSS id 选择器

C# 构造函数给出 "Method must have a return type"

C++ 应用程序无法正确启动 (0xc000000d)

javascript - 了解带有对象的 map 函数 : Keys and Values