将数据类型传递给C ++类构造函数

时间:2017-10-29 20:28:12

标签: c++ class templates types constructor

我非常需要将数据类型传递给类的构造函数。我正在进行图像处理(到目前为止在Matlab中),现在需要使用ITK和VTK库。事实上,我的图像来自不同的类型和大小。不幸的是,我不知道如何将数据类型传递给我的类。拥有不同数据类型的相同类的不同副本真的很痛苦! 这是一个非常简单的例子来表达我的意思和需要。在这个例子中,我将创建一个“int”类型的动态数组。这个问题很有效,但我不知道如何使用模板。能告诉我如何更改代码以便能够定义任何类型的动态数组吗? 提前谢谢,

主要

#include "stdafx.h"
#include <iostream>
#include <string>
#include "Myclass.h"

using namespace std;

int main()
{   
Myclass c1;
system("pause");
return 0;
}

班级定义:

Myclass.h

class Myclass
{
public:
Myclass();
~Myclass();


private:
int size;
int* my_dynamic_array;
void SetPrivate();
};

Myclass.cpp

#include "stdafx.h"
#include "Myclass.h"
#include <iostream>

using namespace std;
Myclass::Myclass()
{
cout << "Please enter the size of array: ";
cin >> size;

my_dynamic_array = new int[size];
SetPrivate();
}



void Myclass::SetPrivate() {
cout << "\n\nPlease enter " << size << " numbers for the array elements...";
for (int i = 0; i < size; i++) {
    cout << "\n\n#" <<i+1<<" : ";
    cin >> my_dynamic_array[i];

}
}


Myclass::~Myclass()
{
delete[] my_dynamic_array;
}

1 个答案:

答案 0 :(得分:0)

不评论您是否可以使用int *my_dynamic_array代替template<typename T> class ImageClass { public: ImageClass<T>() { cout << "Please enter the size of array: "; cin >> this->size; my_dynamic_array = new T[this->size]; SetPrivate(); } void SetPrivate() { cout << "\n\nPlease enter " << this->size << " numbers for the array elements..."; for (int i = 0; i < this->size; i++) { cout << "\n\n#" <<i+1<<" : "; cin >> my_dynamic_array[i]; } } protected: int size; T *my_dynamic_array; }; int main() { ImageClass<int> ic_i; ImageClass<double> ic_d; } ,我只是将您的代码翻译成模板。希望它有所帮助:

SDK Platform-Tools for Windows