0

我在写课时遇到问题。当我将定义移动到另一个源文件以保持“干净”时,出现了问题。

我收到的消息是:

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 ==========

我在 main.cpp 中声明为全局的对象在哪里Kasa_Sklepowa- 我猜这可能是出现问题的原因。

在它向我展示带字符串的类声明中有问题之前。

#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)
{
...
}
4

2 回答 2

0

我认为您不需要 cpp 文件上的 extern 声明。

关于您之前遇到的与字符串相关的错误 - 确保您#import <string>.

于 2013-03-28T02:11:14.250 回答
0

这一行:

Rachunek Kasa_sklepowa();

声明一个函数,它不同于变量。

您需要做的是将此行写在与 Rachunek 类相同的标题中:

extern Rachunek Kasa_sklepowa;

并在相应的 .cpp 文件中写入:

Rachunek Kasa_sklepowa;

第一行只是声明它对编译器可见,第二行实际定义它以便将其放置在 .obj 文件中并且对链接器可见。

顺便说一句,更好的方法是使用静态变量:

class Rachunek
{
public:
    static Rachunek Kasa_sklepowa;

    ...

在 .cpp 文件中,写入:

Rachunek Rachunek::Kasa_sklepowa;
于 2013-03-28T02:14:30.270 回答