C++ 在 class 中使用 iostream

C++ use iostream inside class

我正在使用 iostreammap。当我尝试设置功能时,它们会抛出错误。

我的代码:

#include "string"
#include "iostream"
#include "map"

using namespace std;

class myClass {
    map<string, string> Map;
    Map["Ziv"] = "Sion";

    cout << Map["Ziv"];
};

我的错误:

error: 'Map' does not name a type
error: 'cout' does not name a type

为什么我不能使用 iostreamcout

Why I can't use iostream and cout?

因为class不能(直接)包含表达式语句。它只能包含成员声明。

表达式语句只能在函数内。这将是正确的,例如:

class main {
    map<string, string> Map;

    void example_function() {
        Map["Ziv"] = "Sion";
        cout << Map["Ziv"];
    }
};

没有 main 函数就没有 C++ 程序,所以请创建 int main(){}。并将 #include 指令中的双引号更改为尖括号,如下所示:

#include <string>
#include <iostream>
#include <map>

using namespace std;

class myClass {
    public:
         int myFunc();
};

myClass :: int myFunc(){
       map<string, string> Map;
       Map["Ziv"] = "Sion";

       cout << Map["Ziv"]; 
}

int main(){
myClass myclass;
myclass.myFunc();

return 0;
}

初学者请谅解,如有错误请多多包涵

在面向对象的语言中,例如 C++,您不能在 class 中编写 expressions/statements。您可能想使用一个函数。示例:

#include<iostream>
using std::cout;

class Example {
public:
   void sayHello() {
      cout << "Hello!";
   }   
}

int main() {
   new Example().sayHello(); // Prints Hello!
}

你必须在函数中输入cout,在class你不能执行函数,你只能描述它们或变量/对象。

Class 是一个实体,它包含相关的数据成员以及修改或访问这些数据成员的操作。 class 内不能执行任何表达式。做一些你无法访问的事情是没有意义的。因为访问和修改某些东西的唯一方法是操作。

是的,如果您想在创建 class 对象时打印一些内容,您可以在构造函数中执行此操作。可能这就是你想要做的:

#include <map>
#include <iostream>
#include <string>

class myClass {
private:
    std::map<std::string, std::string> Map;
public:
    myClass(const std::string& key, const std::string& value){
        Map[key] = value;
        std::cout << value;
    }
};

int main(){
    myClass cls("Ziv", "Sion");
}