我在编写课程时遇到了问题。 当我将定义移动到另一个源文件以保持“干净”时出现问题。
我收到的信息是:
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中有错误之前。
#pragma once
class Rachunek
{
double saldo_ogolne;
public:
Rachunek() {saldo_ogolne=0;};
~Rachunek();
void transakcja(std::string,std::string,double);
void czysc_zarobki();
};
源文件(cpp)
extern Rachunek Kasa_sklepowa;
void Rachunek::transakcja(string _pes,string co,double ile)
{
bla bla
}
主文件
Rachunek Kasa_sklepowa();
int main (int agc, char**argv)
{
...
}
答案 0 :(得分:0)
我认为你不需要在cpp文件上使用extern声明。
关于您之前遇到的与字符串相关的错误 - 请确保#import <string>
。
答案 1 :(得分:0)
这一行:
Rachunek Kasa_sklepowa();
声明一个与变量不同的函数。
您需要做的是将此行写在与Rachunek类相同的标题中:
extern Rachunek Kasa_sklepowa;
在相应的.cpp文件中,写一下:
Rachunek Kasa_sklepowa;
第一行只是声明它对编译器可见,第二行实际定义它,以便它放在.obj文件中并且对链接器可见。
BTW,更好的方法是使用静态变量:class Rachunek
{
public:
static Rachunek Kasa_sklepowa;
...
在.cpp文件中,写一下:
Rachunek Rachunek::Kasa_sklepowa;