C++ 未解析的外部符号C++;-申报错误?
我写一节课有问题。 当我将定义移动到另一个源文件以保持“干净”时,问题就出现了 我收到的信息是:C++ 未解析的外部符号C++;-申报错误?,c++,compiler-errors,external,C++,Compiler Errors,External,我写一节课有问题。 当我将定义移动到另一个源文件以保持“干净”时,问题就出现了 我收到的信息是: 1>------ Build started: Project: 1 projekt - sklep, Configuration: Debug Win32 ------ 1> main.cpp .1funkcje.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .(?Kasa
1>------ Build started: Project: 1 projekt - sklep, Configuration: Debug Win32 ------
1> main.cpp
.1funkcje.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .(?Kasa_sklepowa@@3VRachunek@@A)
1>metody_r.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .(?Kasa_sklepowa@@3VRachunek@@A)
1>C:\Users\Ja\Desktop\Studia\PW\Semestr II\C++\Cwiczenia - klasy,obiekty\Debug\1 projekt - .sklep.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
其中,Kasa_Sklepowa
是我在main.cpp中声明为全局的对象-
我想这可能是出问题的原因
在它向我显示类dclaration中有一些错误之前,使用string
#pragma once
class Rachunek
{
double saldo_ogolne;
public:
Rachunek() {saldo_ogolne=0;};
~Rachunek();
void transakcja(std::string,std::string,double);
void czysc_zarobki();
};
源文件(cpp)
主文件
Rachunek Kasa_sklepowa();
int main (int agc, char**argv)
{
...
}
我认为你不需要cpp文件上的外部声明 关于您以前遇到的与字符串相关的错误,请确保您
#导入此行:
Rachunek Kasa_sklepowa();
声明一个不同于变量的函数
您需要做的是将这一行写在与Rachunek类相同的标题中:
extern Rachunek Kasa_sklepowa;
并在相应的.cpp文件中写入:
Rachunek Kasa_sklepowa;
Rachunek Rachunek::Kasa_sklepowa;
第一行只是声明它对编译器是可见的,第二行实际上定义了它,以便它放在.obj文件中,并且对链接器是可见的
顺便说一句,更好的方法是使用静态变量:
class Rachunek
{
public:
static Rachunek Kasa_sklepowa;
...
并在.cpp文件中写入:
Rachunek Kasa_sklepowa;
Rachunek Rachunek::Kasa_sklepowa;
为什么在类impl文件中需要“extern Rachunek Kasa_sklepowa;”?另外,你必须在main.cpp中包含“Rachunek.h”文件,而且看起来你正在使用MSVC,请将Rachunek.h/.cpp文件添加到你的项目中。我已经在主文件中包含了Rachunek.h。我必须有这个“extern..”,因为这样我就有了错误,比如>1>c:\users\ja\desktop\studia\pw\semestr ii\c++\cwiczenia-klasy,obiekty\1 projekt-sklep\metody\u r.cpp(71):错误C2065:“Kasa\u sklepowa”:未声明的标识符,它们已添加到我的项目中。要我把它们粘贴在这里吗?字符串可以。有趣的是,我只把“transakcja”函数从一个文件移到了另一个文件,其他什么都没有:(好的,少两个错误:)只剩下一个了1>funkcje.obj:error LNK2001:unresolved外部符号“class Rachunek Kasa_sklepowa”(?Kasa_sklepowa@@3VRachunek@@A)1>C:\Users\Ja\Desktop\Studia\PW\Semestr II\C++\Cwiczenia-klasy,obiekty\Debug\1 projekt-sklep.exe:致命错误LNK1120:1未解析外部可能是因为您没有将Rachunek实现文件(.cpp)添加到项目中。我已经添加了您知道的。。请注意,现在funkcje.obj和funkcje.cpp上的错误点都有外部Rachunek Kasa_sklepowa;也许这和它有关?你有没有外部的Rachunek Kasa_sklepowa是在头文件中还是在.cpp文件中?它应该在标题中。在.cpp文件中,您需要Rachunek Kasa_sklepowa代码>(不带外部代码)。