不能在c++中从main实例化另一个类
Can not instantiate another class from main in C++
这些是我的文件。我试图使用main.cpp中的另一个类打印一行,但它给出了一个错误"对poddy的未定义引用:poddy()"
main.cpp
#include <iostream>
#include "poddy.h"
using namespace std;
int main() {
poddy le;
return 0;
}
poddy.h
#ifndef PODDY_H
#define PODDY_H
class poddy {
public:
poddy();
};
#endif // PODDY_H
poddy.cpp
#include "poddy.h"
#include <iostream>
using namespace std;
poddy::poddy() {
cout << "I am llalala and use anoder class" << endl;
}
请帮帮我!
你的c++代码是正确的。"未定义引用"是与编译代码的方式有关的链接器错误。为了使其链接,使用以下命令行:
g++ poddy.cpp main.cpp
下面是详细说明:编译c++代码的过程有三个主要阶段——预处理、编译和链接。预处理器处理代码中的#define
和#include
语句。编译器接受预处理的结果,并为每个翻译单元生成二进制代码(在您的示例中,有两个翻译单元—poddy.cpp
和main.cpp
)。最后,链接器在翻译单元内的二进制代码之间建立连接。
即使每次只提供一个翻译单元,预处理器和编译器也能完成它们的工作。然而,连接器必须同时"看到"所有的翻译单元。当您调用没有附加标志的g++
时,将调用编译器的所有阶段,包括链接器。这就是为什么你需要一次列出所有的翻译单位。
相关文章:
- 如果模板参数是另一个模板的实例化,则键入特征测试
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何正确实例化静态字段 tat 是另一个类对象
- C++入门5版:使用get成员初始化另一个与shared_ptr无关的对象
- 连接类实例和另一个类实例中的对话框之间的槽和信号
- 如何使用构造函数初始化另一个类的对象
- 初始化另一个类中的类的对象
- 将类实例作为另一个类参数传入
- 如何在类的构造函数中将对象实例化为另一个类?C++
- 我可以初始化另一个类中的类吗?
- 当用于初始化另一个对象时,为什么要按值传递参数
- 一个实例影响另一个实例,尽管它不应该't
- 不能在c++中从main实例化另一个类
- 如何在c++中从一个实例访问另一个实例的信息
- 如何创建知道它的实例在另一个类的矩阵中的方法
- (复制构造函数)作为参数传递给初始化另一个对象的对象如何访问私有成员
- 保存一个对象的变量,然后可以用这些变量初始化另一个对象
- 初始化另一个变量或反复使用原始变量
- 类的多个实例使用另一个类的单个实例