gpt4 book ai didi

c++ - 对另一个类中的一个类使用重载运算符

转载 作者:行者123 更新时间:2023-11-28 03:31:22 26 4
gpt4 key购买 nike

我有一个带有重载插入运算符的类,它在我的驱动程序中工作:

#include <iostream>
#include <cstdlib>
#include "xml_attribute.h"

int main(){
using namespace std;

XML_AttributeT a("name","value");
cout << a << endl;

return EXIT_SUCCESS;
}

输出:name="value"
作品。

我想在包含此类的另一个类中利用此功能:
标题

#pragma once
#ifndef XML_ELEMENTT_H
#define XML_ELEMENTT_H

#include <string>
#include <vector>
#include <iostream>
#include "xml_attribute/xml_attribute.h"

struct XML_ElementT{

std::string start_tag;
std::vector<XML_AttributeT> attributes;
bool single_tag;

//Constructors
explicit XML_ElementT(std::string const& start_tag, std::vector<XML_AttributeT> const& attributes, bool const& single_tag);
explicit XML_ElementT(void);

//overloaded extraction operator
friend std::ostream& operator << (std::ostream &out, XML_ElementT const& element);

};
#endif

cpp

#include "xml_element.h"

//Constructors
XML_ElementT::XML_ElementT(std::string const& tag_, std::vector<XML_AttributeT> const& attributes_, bool const& single_tag_)
: start_tag{tag_}
, attributes{attributes_}
, single_tag{single_tag_}
{}
XML_ElementT::XML_ElementT(void){}

//overloaded extraction operator
std::ostream& operator << (std::ostream &out, XML_ElementT const& element){

for (std::size_t i = 0; i < element.attributes.size()-1; ++i){
out << element.attributes[i]; //<- Does not work
}
return out;// << element.attributes[element.attributes.size()-1];
}

错误:

undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, XML_AttributeT const&)

我怎样才能让它工作?

最佳答案

undefined reference to `operator<<(std::basic_ostream<...>&, XML_AttributeT const&)

该错误意味着编译器已正确解析代码,并且您有一个带有上述签名的运算符声明。 但是,链接器没有在您的程序中找到该函数的定义。这可能是由不同的原因引起的,例如无法链接库或定义运算符的 .o。

关于c++ - 对另一个类中的一个类使用重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487630/

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