2013-03-28 155 views
0

我在写课程时遇到问题。 当我将定义移动到其他源文件以保持“干净”时出现问题。无法解析的外部符号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" .([email protected]@[email protected]@A) 
1>metody_r.obj : error LNK2001: unresolved external symbol "class Rachunek Kasa_sklepowa" .([email protected]@[email protected]@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中一个全局对象 - 我想这可能就是为什么有一些错误的理由。

之前它已经告诉我,类声明有字符串的错误。

#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

为什么需要 “外部Rachunek Kasa_sklepowa;”在类impl文件中?你也必须在main.cpp中包含“Rachunek.h”文件。 – Arun 2013-03-28 02:01:09

+0

它看起来像你正在使用MSVC,请将Rachunek.h/.cpp文件添加到您的项目。 – Arun 2013-03-28 02:02:19

+0

我在主文件中包含了Rachunek.h。 我必须有这个“外部..”,因为那样我就有错误,如 > 1> c:\ users \ ja \ desktop \ studia \ pw \ semestr ii \ C++ \ cwiczenia - klasy,obiekty \ 1 projekt - sklep \ metody_r.cpp(71):错误C2065:'Kasa_sklepowa':未声明的标识符 它们已被添加到我的项目中。 你想让我把它们粘贴在这里吗? – 2013-03-28 02:11:42

回答

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; 
+0

OK,少2个错误:) 这里只有一个左 1> funkcje.obj:错误LNK2001:无法解析外部符号“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无法解析的外部信息 – 2013-03-28 02:22:50

+0

也许您没有将Rachunek实施文件(.cpp)添加到您的项目中。 – user1610015 2013-03-28 02:25:10

+0

我已添加 您知道..注意现在funkcje.obj和funkcje.cpp中的错误点我有 extern Rachunek Kasa_sklepowa; 也许它与它有关? – 2013-03-28 02:27:17

0

我不认为你需要在cpp文件的外部声明。

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

+0

字符串正常。 有趣的是,我只从一个文件移动到“transakcja”功能,另一个没有别的:( – 2013-03-28 02:16:57