C++ C++;创建模板T对象的副本
嘿,伙计们,有人能帮我吗 我的问题是,我不知道如何正确使用带有运算符的模板 这是我的班级:C++ C++;创建模板T对象的副本,c++,templates,operator-overloading,C++,Templates,Operator Overloading,嘿,伙计们,有人能帮我吗 我的问题是,我不知道如何正确使用带有运算符的模板 这是我的班级: template <typename T> class myClass { public: myClass() {} }; template <typename T> //create copy of object T in myClass myClass& operator<<(const T&) { //how should
template <typename T>
class myClass {
public:
myClass() {}
};
template <typename T>
//create copy of object T in myClass
myClass& operator<<(const T&) {
//how should my code look right here?
}
myClass& operator>>(T&){
//and here ??
}
模板
类myClass{
公众:
myClass(){}
};
模板
//在myClass中创建对象T的副本
myClass和运算符(T&){
//这里呢??
}
这是我的主要观点:
#include <iostream>
#include <string>
#include <fstream>
int main(){
myClass<string> e; // create empty myClass
string someText = "testing this text blabla";
e << someText; //input of someText in e
//test if input works correctly
string test;
e >> test; //put value of e in string test
cout << test << endl; //output test
return 0;
}
#包括
#包括
#包括
int main(){
myClass e;//创建空的myClass
string someText=“测试此文本blabla”;
e>test;//将e的值放入字符串测试中
只需按main
函数中的代码执行即可:
e << someText; //input of someText in e
也许你可以做一些类似的事情
template<typename T>
class myClass
{
public:
myClass() = default; // Defaulted default constructor
myClass& operator<<(T const& val)
{
value_ = val;
return *this;
}
myClass& operator>>(T& val)
{
val = value_;
return *this;
}
private:
T value_;
};
实际上翻译为
operator>>(e, test);
不完全清楚您试图尝试的是什么。您的myClass
应该像对象的容器一样运行T
?非成员运算符重载需要两个参数:要使用的对象,以及要使用的另一个对象或值。有关详细信息,请参阅。当然,也应该阅读解释清楚。如果它是一个字符串
你将如何复制它?这样做,但是写T
而不是字符串
。可以使操作符>
成为常量
成员函数。@Mansoor不能这样做,因为它返回了对非常量自身的引用。
e >> test;
operator>>(e, test);