我有一个数字类,在main方法中我创建了一个指向数字对象的指针。该对象有一个字符串字段,其中包含数字的值作为字符串。我正在尝试用cout打印该字符串值,但我一直在失败。我是初学者,我深陷重载<<操作员和东西,但我找不到打印指针的方式,谢谢..
Number *n1 = new Number();
cout<<*n1; // That must print the string value
编辑:我可以编写一个函数来打印一个数字对象,但这不是交易。我也熟悉number-&gt;值语法。我想我需要做的是重载&lt;&lt; operator用于打印指向对象的指针
答案 0 :(得分:2)
在c ++中你可以重载所有类型的运算符等。+,++, - , - ,... 你也可以重载&lt;&lt;做任何你想做的事。
对于您的示例,您可以执行以下操作:
在课堂定义中
class Number
{
public:
std::string value;
friend ostream& operator<<(ostream& os, const Number& num);
}
然后根据需要定义函数。 例如:
ostream& operator<<(ostream& os, const Number& num)
{
os << num.value;
return os;
}
在该运算符之后&lt;&lt;类Number中的对象将打印保存在字符串值中的值。
有关更多信息,请参阅:http://en.cppreference.com/w/cpp/language/operators
答案 1 :(得分:0)
假设您的Number
课程如此:
class Number
{
public:
std::string value;
};
然后你可以用以下方式打印价值:
Number* n1 = new Number();
std::cout << n1->value;