gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:05:28 34 4
gpt4 key购买 nike

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

我收到的消息是:

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;

关于c++ - 无法解析的外部符号C++-错误的声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15672916/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com