2016-12-19 2 views
-4

メイン関数でテンプレートクラスを使用する必要があります。私の主な機能の中でテンプレートクラスを参照しているからです。たとえば、次のようにメイン関数でのテンプレートクラスの使用方法

LinkedListInterface<T> * linkedList = new LinkedListInterface<T>*; 

だから私は、上記のテンプレート宣言を入れてみました「(int型メイン)」

template<typename T> 
int main() 

しかし、それはもはや主な機能としてこれを認識しているため、私はリンクエラーを得ません。私はいくつかの回避策を試しました。すべてを行った関数を作成するのと同じですが、その関数はテンプレートクラスでなければならなかったので、mainから呼び出すことはできませんでした。助けていただければ幸いです。ありがとう。

`

答えて

1

それはメインのテンプレートすることはできませんが、私はあなたがそれを行うたいとは思いません。

あなたはこれを行うことができますテンプレートを使用する場合:

LinkedListInterface<int> *linkedList = new LinkedListInterface<int>(); 
0

をはるかに悪い問題があります:それは言うことができないので、

コンパイラは、とにかくテンプレート関数のインスタンスを区別することはできませんmain<int>main<whatever>の違いは、テンプレート関数の署名の一部ではないためです。

他の回答に記載されているように、mainはテンプレートではありません。

1

mainは、関数テンプレートにすることはできません。それは関数でなければなりません。 main内のクラステンプレートを使用するには、オブジェクトの宣言に必要なすべてのテンプレートパラメータを提供することで、テンプレートをインスタンス化する必要があります。

LinkedListInterface<int> linkedList; 

これは最初のテンプレートクラス・テンプレートLinkedListInterfaceからクラスを作成するようにコンパイラーに指示しますパラメータはタイプintです。次に、そのタイプのオブジェクトを作成します。

関連する問題