【问题标题】:cout a string member variablecout 字符串成员变量
【发布时间】:2018-05-19 05:02:30
【问题描述】:

我有一个字符串类类型的成员变量和一个返回该成员变量的成员函数。问题是这个返回值不能用来输出字符串,我也不知道为什么会这样……

#include <string>
#include <iostream>

class course {
public:
    std::string name = "hello";
    std::string get_name() {
        return name;
    }
};

int main() {
    course obj;
    std::cout << obj.get_name;
        return 0;
}

但是,这段代码可以正常工作:

std::string a = "hi";
std::cout << a;

【问题讨论】:

  • 方法调用应该是obj.get_name()
  • 您需要使用正确的函数调用语法。 std::cout &lt;&lt; obj.get_name();

标签: c++ string class cout


【解决方案1】:
std::cout << obj.get_name;

应该是

std::cout << obj.get_name();

因为get_name() 是一个成员函数。

【讨论】:

  • 是的,你是对的。这是一个愚蠢的错误。但是,编译器一直让我感到困惑,告诉我必须使用引用(¿?)。谢谢大家。
  • @HansGP 你的编译器(及其版本)是什么?
  • MVS Community v.15.3.5 是编译器。谢谢你的建议,我去看看。
  • @这是一个很棒的答案,它解释了为什么编译器告诉我需要参考:) stackoverflow.com/a/37816236/6949852
  • XD 这解释了来自我的编译器的神秘信息。很好奇……有时 C++ 有奇怪的规则。
【解决方案2】:

你必须通过类“course”的对象“obj”来调用函数。调用时添加括号。

std::cout << obj.get_name();

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多