0

クラスが特定のタイプの場合、Print 関数を特殊化する必要があるサンプル クラスがあります。しかし、これはまったくコンパイルされません。

template <typename classType, int size>
class MyVector
    {
    public:
        classType* innerArray;
        MyVector(){innerArray = new classType[size];}
        ~MyVector(){delete[] innerArray;}

        void push_back(classType val)
            {
            innerArray[0] = val;
            }

        classType& operator[](int index)
            {
            assert(index >= 0);
            return innerArray[index];
            }

        void Print() {
            cout << "Printing Normal" << endl;
            }
    };

void MyVector<double>::Print()
    {
    cout << "Printing Double" << endl;
    }
4

1 に答える 1

0

MyVector2 つのテンプレート パラメータが必要です。

void MyVector<double, 16>::Print()
    {
    cout << "Printing Double" << endl;
    }

または、2 番目のテンプレート パラメータにデフォルト値を指定する必要があります。

template <typename classType, int size = 16>
class MyVector
...
于 2012-06-12T00:48:20.603 に答える