2016-10-23 7 views
-4

どのように私のテンプレートヘッダーを作成するすべてのmyvecsのサイズは、サイズをmyvecBに設定する方法を知っています。 5はmyvecCサイズに設定されます。 6はmyvecDサイズに設定されます。私は最初のサイズが機能していますが、私の他のコンストラクタのサイズを設定することはできません

main.cppに

int main() 
{ 
myclass<int> myvecA; 
myclass<int> myvecB(10); 
myclass<int> myvecC(5,-9); 
myclass<string> myvecD(6, "Hi"); 

cout << "A size: " << myvecA.size() << endl; 
cout << "B size: " << myvecB.size() << endl; 
cout << "C size: " << myvecC.size() << endl; 
cout << "D size: " << myvecD.size() << endl; 
system("Pause"); 
return 0; 
} 

マイテンプレートクラス

#include<iostream> 

template <class C> 
class myclass{ 

public: 
myclass(int x);{ 
    sizearr = x;} 

explicit myclass() : sizearr(0) {} 

V size(); 

private: 

V sizearr; 

}; 

template <class V> 
V myclass<V>::size() { 
    return sizearr; 
} 
+0

V'は、それは 'int'すべきではない'は何ですか? –

+0

'myclass'か' vector'ですか?それはあなたの「MCVE」がすべての信頼性を失う方法です。 – LogicStuff

+1

そのコードはコンパイルされません。コピー&ペーストを使用します。 – molbdnilo

答えて

1

あなたが示したコードは、エラーに満ちていると、コンパイルされません。代わりにこれを試してみてください:

template <class V> 
class myclass {  
public: 
    myclass() : sizearr(0) {} 
    myclass(int x) : sizearr(x) {} 
    myclass(int x, const V &v) : sizearr(x) {} 

    int size(); 

private:  
    int sizearr;  
}; 

template <class V> 
int myclass<V>::size() { 
    return sizearr; 
} 

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    myclass<int> myvecA; 
    myclass<int> myvecB(10); 
    myclass<int> myvecC(5, -9); 
    myclass<string> myvecD(6, "Hi"); 

    cout << "A size: " << myvecA.size() << endl; 
    cout << "B size: " << myvecB.size() << endl; 
    cout << "C size: " << myvecC.size() << endl; 
    cout << "D size: " << myvecD.size() << endl; 
    system("Pause"); 
    return 0; 
} 
関連する問題