C++ 如何使用数据类型打印地图内容是一个类对象

C++ 如何使用数据类型打印地图内容是一个类对象,c++,map,C++,Map,我参考了有关打印地图内容的链接: 因此,我知道打印地图内容的基本方法,但我不确定是否使用数据类型为类对象和其他代码以以下方式定义了地图,如下所示: typedef map <string, fsdbSig *> Pinname_sig; Pinname_sig _Pinname_sig; Pinname_sig :: iterator itPS; 我想知道打印地图内容的方式与上面的链接相同吗 for (itPS = _Pinname_sig.begin(); itPS != _P

我参考了有关打印地图内容的链接:

因此,我知道打印地图内容的基本方法,但我不确定是否使用数据类型为类对象和其他代码以以下方式定义了地图,如下所示:

typedef map <string, fsdbSig *> Pinname_sig;
Pinname_sig _Pinname_sig; 
Pinname_sig :: iterator itPS;
我想知道打印地图内容的方式与上面的链接相同吗

for (itPS = _Pinname_sig.begin(); itPS != _Pinname_sig.end(); ++itPS){
    cout << "Jden-key:" << itPS->first << "," << "value:" << itPS->second <<endl;
}

如果是,则何时使用重载操作符基本上打印此内容,您将执行以下操作:

typedef map <string, fsdbSig *> Pinname_sig;
Pinname_sig _Pinname_sig; 
Pinname_sig::iterator itPS;

for (itPS = _Pinname_sig.begin(); itPS != _Pinname_sig.end(); ++itPS){
    cout << "Jden-key:"<< itPS->first<< ","<< "value:"<< *(itPS->second) <<endl;
                                                         ^ since itPS->second
                                                         is pointer to fsdbSig
}
或者在fsdbSig类中:

它不必是结构的朋友,因为C++结构中的所有元素都是公共的,每个人都可以访问它。所以这个定义可以放在结构的外部,然后应该从内部结构中删除它的声明

补充说明: 我的建议是,在这里询问之前,一定要先使用谷歌搜索引擎。你总是能很快找到基本问题的答案,比如

错误:未定义的引用


如果列出了堆栈溢出帖子,请始终首先选择指向这些帖子的链接。

我不清楚这个问题是关于如何将指向对象的指针发送到std::ostream还是如何为映射的元素类型编写插入运算符。你能澄清这个问题吗?或者可能是两者都有,或者两者都没有?@WhozCraig嗨。实际上这两个问题我都希望知道答案我尝试使用*itPS->second,但出现了以下错误:与“运算符”不匹配。您定义了吗operator@milk4508注意:如果你的类fsdbSig很复杂,你需要知道打印它意味着什么,我现在会尝试并反馈给你。你的意思是我只需要复制friend std::ostream&operatorHi,在我复制到类之后,现在得到了这个错误:未定义对`operator'的引用
typedef map <string, fsdbSig *> Pinname_sig;
Pinname_sig _Pinname_sig; 
Pinname_sig::iterator itPS;

for (itPS = _Pinname_sig.begin(); itPS != _Pinname_sig.end(); ++itPS){
    cout << "Jden-key:"<< itPS->first<< ","<< "value:"<< *(itPS->second) <<endl;
                                                         ^ since itPS->second
                                                         is pointer to fsdbSig
}
std::ostream& operator<< (std::ostream&, const fsdbSig&);
class fsdbSig {
          public:
             friend std::ostream& operator<< (std::ostream& , const fsdbSig&);
     };
std::ostream& operator<< (std::ostream& os, const fsdbSig& f){
    os<<"My name is: "<<f.name;
    return os;
}