gpt4 book ai didi

C++ 创建模板 T 对象的拷贝

转载 作者:行者123 更新时间:2023-11-30 03:12:57 25 4
gpt4 key购买 nike

大家好,有人可以帮帮我吗?

我的问题是我不知道如何正确使用带有运算符的模板。

这是我的课:

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

这是我的主要内容:

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

最佳答案

只看 main 函数中的代码:

e << someText;  //input of someText in e

e >> test; //put value of e in string test

也许你可以做类似的事情

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

对此有两种选择:将运算符声明为 friend 非成员函数。或者添加一对 getter 和 setter 函数来获取和设置值,然后使用使用 getter/setter 函数的非成员函数来获取和设置值。

但请记住,非成员函数(友元函数或其他函数)需要将对象作为第一个参数。这是因为对于非成员(member)运营商

e >> test;

实际翻译为

operator>>(e, test);

关于C++ 创建模板 T 对象的拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59087742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com