C ++在同一个类中有2个向量时不能重载运算符<<

时间:2018-11-22 20:35:45

标签: c++ class vector overloading operator-keyword

所以我在这段代码上遇到了问题,我想以一种新的大胆的方式插入字符串。它可以编译,但不会连续运行2个流箭头。我将所有与问题无关的东西都撕掉了,直到剩下的全部为止。显然,第一个向量使第二个向量嫉妒,因为它首先被初始化,因为如果我移动它们,一切都会很好。现在,我想知道为什么会这样,因为我相信您可以在任何需要的地方初始化任何东西,只要它超出实际需要的东西即可。

为什么切换类中的两个向量会修复我的代码? 预先感谢!

#include <iostream>
#include <string>
#include <vector>

class director {
    public:

    std::vector<int> i;

    std::vector<std::string*> vecProgBars;

    friend director& operator<<(director& objThis, std::string message) {
        std::string* strPtr = new std::string(message);
        objThis.vecProgBars.push_back(strPtr);
    };
};


int main () {

    director P;

    std::cout << "This is running" << std::endl;
    P << "Hello";
    std::cout << "This also" << std::endl;
    P << "World" << "!";
    std::cout << "But not this" << std::endl;

}

0 个答案:

没有答案