gpt4 book ai didi

c++ - 不使用任何外部库时,是否存在 LNK2001 Unresolved external symbol 错误的可能/常见原因?

转载 作者:行者123 更新时间:2023-11-28 08:04:39 25 4
gpt4 key购买 nike

我正在尝试创建类的新实例,但是当我尝试编译代码时收到 LNK2001 未解析的外部符号错误。

据我所知,我编写和包含该类的方式与我包含另一个类的方式完全相同,在这两种情况下 -

#include "class.h"      // In main.cpp 

class Class { // In class.h
private:
// etc.
public:
Class();
~Class();
// etc.
};

#include "class.h" // In class.cpp

这些错误是否有一个常见/可能的原因,或者我可以找到问题根源的好方法?

编辑:错误是

"Error 1 error LNK2019: unresolved external symbol "class Max __cdecl max(void)" (?max@@YA?AVMax@@XZ) referenced in function _main main.obj Racing "

编辑:在这两种情况下,类都是跨项目中包含的 .h 和 .cpp 文件实现的。该错误仅出现在一个类中。

最佳答案

你在某处写了这个:

Max max();

您打算声明一个 Max 类型的变量 max

C++ 认为您打算声明一个函数 max,它返回一个 Max 类型的对象。这就是它要找的东西。

如果你只是这样说:

Max max;

问题将消失。

编辑:这只发生在不带参数的构造函数中。如果构造函数采用参数,C++ 可以从参数(将是右值,例如常量或表达式)看出它是类的实例化而不是函数声明。

Max max(5);  // Clearly cannot be a function, because 5 is an rvalue

或者

Max max(int); // Clearly cannot be an instantiation, because int is a type

但是如果构造函数不带参数,为了区分它们,如果你正在实例化,你必须去掉括号。

关于c++ - 不使用任何外部库时,是否存在 LNK2001 Unresolved external symbol 错误的可能/常见原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10539363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com