2016-10-23 13 views
-4

템플릿 헤더가 모든 myvecs의 크기를 찾도록하려면 어떻게해야합니까? 생성자가 없어도 첫 번째가 0으로 설정되지만 작동하지 않습니다. t는 myvecB 크기로 10을 설정하는 방법을 알고 있습니다. 5는 myvecC 크기로 설정됩니다. myvecD 크기로 6이 설정됩니다.첫 번째 크기가 작동하지만 내 다른 생성자의 크기를 설정할 수 없습니다

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; 
}