का उपयोग करना किसी को एक स्टडी कंटेनर के value_type का उपयोग कैसे करना चाहिए?
मैं बहुत की तरह उपयोग करने की कोशिश की:एक टेम्पलेटेड पैरामीटर के value_type
#include <vector>
using namespace std;
template <typename T>
class TSContainer {
private:
T container;
public:
void push(T::value_type& item)
{
container.push_back(item);
}
T::value_type pop()
{
T::value_type item = container.pop_front();
return item;
}
};
int main()
{
int i = 1;
TSContainer<vector<int> > tsc;
tsc.push(i);
int v = tsc.pop();
}
लेकिन इस में जो परिणाम:
prog.cpp:10: error: ‘T::value_type’ is not a type
prog.cpp:14: error: type ‘T’ is not derived from type ‘TSContainer<T>’
prog.cpp:14: error: expected ‘;’ before ‘pop’
prog.cpp:19: error: expected `;' before ‘}’ token
prog.cpp: In function ‘int main()’:
prog.cpp:25: error: ‘class TSContainer<std::vector<int, std::allocator<int> > >’ has no member named ‘pop’
prog.cpp:25: warning: unused variable ‘v’
मुझे लगा कि यह क्या :: VALUE_TYPE के लिए था?
संभावित डुप्लिकेट [मुझे कहां और क्यों "टेम्पलेट" और "टाइपनाम" कीवर्ड डालना है?] (Http://stackoverflow.com/questions/610245/where-and-why-do-i-have -to-put-the-template-and-typename-keyword) –
जब आप पुन: प्रयोज्य लाइब्रेरी कोड (या यहां तक कि कभी भी) लिख रहे हैं, तो यह भी सलाह दी जाती है कि 'नेमस्पेस std;' का उपयोग न करें। बस सही नामस्थान का जादू करें। –
@ केरेकस्क: यह एक उदाहरण था। –