Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何调用用于重载运算符的friend函数<<&引用;?_C++ - Fatal编程技术网

C++ 如何调用用于重载运算符的friend函数<<&引用;?

C++ 如何调用用于重载运算符的friend函数<<&引用;?,c++,C++,.h文件 输出是 char array[20] = {'1','2','4','g','1', '2','6','b','v','c', 'b','c','b','q','b', 'p','b','q','m'}; MyString testStr2(array); testStr2.displayState(cout); 我的代码希望使我

.h文件

输出是

  char array[20] = {'1','2','4','g','1',
                      '2','6','b','v','c',
                      'b','c','b','q','b',
                      'p','b','q','m'};
    MyString testStr2(array);

    testStr2.displayState(cout);

我的代码希望使我的输出像

Size: 19
Capacity: 20
Data: 124g126bvcbcbqbpbqm
当我删除friend函数时。我的输出仍然是一样的。我只是不知道为什么当我调用显示功能和操作员时
  • 你的标题可能有拼写错误?您正在重载
    运算符
    的问题

  • 如果我对输入错误的猜测是正确的,那是因为您没有调用
    ostream&operator,我在您的示例中找不到错误,但设法得到了结果:

    Size: 19
    Capacity: 20
    Data: 1 2 4 g 1 2 6 b v c b c b q b p b q m 
    
    #包括
    使用名称空间std;
    类MyString{
    私人:
    整数大小;
    国际能力;
    字符*数据;
    公众:
    MyString();
    MyString(char*,size_t sz);
    无效显示状态(ostream&out);
    
    friend ostream&Operator“我没有提出我的构造函数,因为我希望我能保护我的代码”意思是说我制作了我的构造器,但我没有把它放在这个网站上,这可能是个错误。除非你有一个构造器在做超机密的事情,否则发布它,这样人们也可以考虑到。如果它包含超机密的东西,在创建你的时把它们移走。是的,我的标题错了,我找不到改变它的方法。我会“我没打电话给我的接线员,怎么打?”我补充了你的问题。
    Size: 19
    Capacity: 20
    Data: 124g126bvcbcbqbpbqm
    
    Size: 19
    Capacity: 20
    Data: 1 2 4 g 1 2 6 b v c b c b q b p b q m 
    
    #include <iostream>
    
    using namespace std;
    
    class MyString{
    private:
        int size;
        int capacity;
        char *data;
    
    public:
        MyString();
        MyString(char *, size_t sz);
        void displayState( ostream &out);
        friend ostream& operator<<(ostream& os, const MyString& dt);
    };
    
    
    MyString::MyString() {
    
    }
    
    MyString::MyString(char *cstr, size_t sz) {
        data = cstr;
        size = sz;
    }
    
    void MyString::displayState(ostream &out) {
        out << *this << endl;
    }
    ostream& operator<<(ostream& out, const MyString& myStr)
    {
        for (int i = 0; i < myStr.size; i++){
            out << myStr.data[i] << " ";
        }
        return out;
    }
    
    int main() {
        char array[20] = {'1', '2', '4', 'g', '1',
                            '2', '6', 'b', 'v', 'c',
                            'b', 'c', 'b', 'q', 'b',
                            'p', 'b', 'q', 'm'};
        MyString testStr2(array, 20);
    
        testStr2.displayState(cout);
    }