2013-03-28 162 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