template<class T>
class Moudle
{
public:
Moudle(int param);
}
template<class T>
Moudle::Moudle(int param)
{
std::cout<<param;
}
簡單的初始化都沒問題
Moudle<int> a(15);
Moudle<int> *b=new Moudle<int>(15);
上面兩種初始化都沒問題
但如果是陣列或者陣列指標,該怎么非隱式初始化?比如陣列、指標陣列元素10個
Moudle<int> c[10];
Moudle<int> (*d)[10];
我用下面的方式初始化,想把初試引數15放進去,都不對。自己把自己繞暈了
Moudle<int> c[10](15)
for(int i=0;i<10;i++)
d[i]=new Moudle<int>(15);
uj5u.com熱心網友回復:
https://blog.csdn.net/qq_25244495/article/details/83661592uj5u.com熱心網友回復:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <memory>
using namespace std;
template<typename T>
class Array2D //表示二維陣列的類
{
public:
class Array1D //表示一維陣列的類
{
public:
Array1D() = default;
T& operator[](size_t index)
{
return const_cast<T&>(static_cast<const Array1D&>(*this)[index]);
}
const T& operator[](size_t index) const
{
return arr1[index];
}
auto& CreateArr1D(size_t nums)
{
arr1.reset(new T[nums]);
return arr1;
}
Array1D(const Array1D&) = delete;
Array1D& operator=(const Array1D&) = delete;
//...
private:
unique_ptr<T[]> arr1{ nullptr };
};
Array2D(size_t dim1, size_t dim2)
{
arr2.reset(new Array1D[dim1]);
for (size_t i = 0; i < dim1; i++)
arr2[i].CreateArr1D(dim2);
}
Array1D& operator[](size_t index)
{
return const_cast<Array1D&>(static_cast<const Array2D&>(*this)[index]);
}
const Array1D& operator[](size_t index) const
{
return arr2[index];
}
Array2D(const Array2D&) = delete;
Array2D& operator=(const Array2D&) = delete;
//...
private:
unique_ptr<Array1D[]> arr2{ nullptr };
};
//Test:
int main()
{
Array2D<int> p(3,5);
p[0][0] = 100;
p[2][4] = 200;
cout << p[0][0] << " " << p[2][4] << endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/175421.html
標籤:C++ 語言
