0

我想从“string.h”(STL)创建一个像“string”这样的类。我的课是:

class MyChar
{
 char *Buff;
 public:

 /* Some constructors and other helpful methods */

};

我的问题是,我不知道如何执行以下操作:

#include <iostream>
int main()
{

 MyChar str;
 str = "My new string";
 cout << str;

}

我不想提“str.Buff”或“str.getBuffer()”之类的……只是“str”。就像“字符串”类一样。

4

4 回答 4

1

如果你想这样使用你的类,你需要一个所谓的“赋值运算符”。维基百科在这里有一篇很好的文章

基本上,您要做的是将右侧(字符数组)分配给左侧(您的类实例)。您将需要重载=运算符,或者像评论所说的那样重载运算<<符。

编辑:由于 OP 因为我没有“正确”回答他晦涩难懂的问题而对我投了反对票,所以这里有一段<<重载:

std::ostream& operator<<(std::ostream& out, const MyChar& buf) {
    out << buf.Buf;
    return out;
}

你会像这样使用它:

std::cout << MyChar << std::endl;

当然,你的班级现在有很多问题要发生,也就是说,你没有为字符数组分配数组空间,祝你好运!

于 2013-06-19T11:01:30.967 回答
1

您需要实现正确的构造函数和赋值运算符。在这种情况下,变体const char*作为参数。您还需要重载输出运算符。

肯定需要了解三规则和动态内存管理。

于 2013-06-19T11:02:25.677 回答
1

您需要为您的类重载赋值运算符=和 ostream 运算符<<。我发现的一篇好文章在这里

于 2013-06-19T11:05:18.643 回答
-1

你需要添加这样的东西:[未测试,但会给你一个想法]

void operator=(const char *str )
{ 
    strcpy(Buff,feet, str);

}

以下应该在类定义之外。

ostream& operator<<(ostream& os, const MyChar& mch)
{
    os << mch.Buff;
    return os;
}

将以下语句添加到您的课程中。朋友 ostream& 运算符<<(ostream& os, const MyChar& mch);

于 2013-06-19T11:16:07.340 回答