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_sklepowaRachunek Kasa_sklepowa(不带外部代码)。