c++ - 无法解析的外部符号C++-错误的声明?

我在写课时遇到问题。
我将定义移至另一个源文件以保持“干净”时发生了问题。

我收到的消息是:

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中声明为A全局的对象-
我猜这可能是出现问题的原因。

在向我展示字符串的类声明中有问题之前。
#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)
{
...
}

最佳答案

这行:

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;

https://stackoverflow.com/questions/15672916/

相关文章:

compiler-errors - 这怎么了? Submit.CommandText = SQL?

sql - Qt QSql类错误

compiler-errors - 在NME中定位-演示项目无法转换为例如JavaScript-目标

php - 在XPath评估之前,如何处理字符串中的双引号?

java - 在 int 上执行方法

macos - 在MacOS上编译Irrlicht项目时出现“symbol(s) not found

variables - 无法编译::I don't understand my errors. Mo

compiler-errors - JRE 抛出的 fatal error

scala - 斯卡拉(Scala),卡斯巴(Casbah): MongoCollection.in

java - Play Framework CompilationException