0

我正在尝试从另一个类中调用构造函数。但不幸的是,我收到了这个错误:

Fun2 未在此范围内声明

这是我的代码:

class Fun1 {
public:
    Fun1 () {
        Fun2("Message");
    }
};

class Fun2 {
public:
    Fun2 (std::string s) {
        std::cout << s;
    }
};

int main()

}

如何将我的“消息”发送给另一个类的构造函数?

4

3 回答 3

2

C++ 通常是从上到下编译的。由于您在定义之前尝试使用Fun2它,因此编译器会抱怨。相反,您可以Fun2先简单地定义您的类:

class Fun2 {
public:
    Fun2 (std::string s) {
        std::cout << s;
    }
};

class Fun1 {
public:
    Fun1 () {
        Fun2("Message");
    }
};

现在,当编译器看到您使用标识符Fun2时,它就知道它对应的是什么,因为它已经看到了定义。

在某些情况下,编译器实际上会多次解析代码,并且在这些地方可以在使用标识符后声明标识符(例如,成员)。

于 2013-05-19T22:43:21.670 回答
2

如果在 Fun1 中使用 Fun2,则必须先声明:

class Fun2 {
  public:
    Fun2 (std::string s) {
        std::cout << s;
    }
};

class Fun1 {
  public:
    Fun1 () {
        Fun2("Message");
    }
};

int main()

}
于 2013-05-19T22:44:16.530 回答
1

Fun2 在您定义 Fun1 时未定义。

尝试前向声明。

 class Fun2;

 class  Fun 1 {
    ... class definition
 }

 class Fun2 {
   .... class definition
 }
于 2013-05-19T22:43:14.160 回答