我非常需要将数据类型传递给类的构造函数。我正在进行图像处理(到目前为止在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;
}
答案 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