簡體   English   中英

編譯C ++類時出現問題

[英]Problem compiling C++ class

我正在運行一個C ++程序,它使用另一個.cpp文件中的類。 該類只有一個構造函數。 它在我單獨測試時有效。 主程序編譯,但是當我運行它時,我在構造函數中有一個錯誤。 任何人都可以想到可能發生的任何情況? 謝謝。

我想我只是在終端中運行代碼,這很好。 但是當我嘗試在eclipse中構建項目時,它顯示以下代碼有多個定義錯誤:

class model
{
  public:
    int textures [];
    float vertices[][3];
    float triangles[][13];
  public:
    model(const char*); // constructor
};

model::model(const char* filename)
{

錯誤信息是:`model :: model(char const *)'的多重定義

任何想法?

無論如何,我會隨機猜測(鑒於你發布的內容,沒什么可去的)。 我猜你已經溢出了你的三角形數組(也許計數器太大了)而且你正在摧毀你的堆或堆棧。

還有一件事。 這一行:

if (str[0] != '#' and !str.empty())

馬車。 如果str為空,則不希望讀取str [0]。 您需要切換訂單:

if (!str.empty() and str[0] != '#')

您需要將代碼拆分為.h(標頭)和a.cpp(實現)文件並放入:

model::model(const char* filename)
{

在后者。 或者,重寫您的類,以便構造函數(以及任何其他成員函數)的定義位於頭文件的類中:

class model {
   ...
   model(const char*) {
     // constructor body here
   }
};

發生錯誤是因為每次將標題包含在某處時,您都會獲得該函數的新定義。 如果它在程序中的多個位置使用,則會出現錯誤。

您可能希望在單獨的實現文件中定義構造函數(類轉到標題以便其他人可以使用它,函數實現轉到.cpp / cc文件)。 或者,您可以在類塊中定義它,而不是在外部執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM