c++ - 为什么没有在此范围内声明函数?

标签 c++

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

Fun2 was not declared in this scope

这是我的代码:

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

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

int main()

}

如何将我的“消息”发送给其他类的构造函数?

最佳答案

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

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

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

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

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

关于c++ - 为什么没有在此范围内声明函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640244/

相关文章:

c++ - 根据 QObject 调整 qtvirtualkeyboard 的大小

c++ - 什么是函数的左值引用?

c++ - 使用 Poco 和 Boost C++ 的多个 Http 服务器

c++ - 需要设计建议 C++ : Want to implement a threaded queue for other threads to pass data

c++ - 循环遍历 CAF 文件的示例

c++ - 将运算符作为函数模板参数传递

C++ 定义全局变量

c++ - 如何将一个对象的多个实例发送到一个函数中

c++ - 无法初始化QMainWindow类型的参数:ui-> setupUi(this)error

c++ - 通过引用将 int 数组传递给构造函数