gpt4 book ai didi

c++ - 我可以制作一个所有类都可以使用的模板 operator<< 重载吗? C++

转载 作者:行者123 更新时间:2023-11-30 02:46:41 24 4
gpt4 key购买 nike

如果我的问题令人困惑,我的意思基本上是这样的:

在 java 中,如果您使用 System.out.println(class),它将默认使用 toString 函数并打印在那里指定的内容。我想知道我是否可以在 C++ 中做类似的事情。我可能还应该提到我不太擅长 C++,所以我的示例代码中可能有很多错误。

class thing  {
private:
char *foo;
public:
thing(){ foo="asd"; }
char* getString(){ return foo; }
friend ostream& operator<<(ostream &out, thing &abc);
};

template<typename T>
ostream& operator<<(ostream &out, T &abc){
out<<abc.getString();
return out; }


int main(){
thing test;
cout<<test;
return 0; }

我尝试过几种方法,但总是会遇到某种错误。

最佳答案

基本思路没问题。虽然,可以说您只是将依赖项从具有 << 重载转移到具有 getString() 成员。不过,您应该通过 const-ref。此外,getString() 应该是常量。

关于c++ - 我可以制作一个所有类都可以使用的模板 operator<< 重载吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378729/

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