2016-11-26 3 views
-2

я переставить код, и теперь я получаю следующее сообщение об ошибке:C++ построить ошибку: класс не называет тип

g++ main.cpp myframe.cpp `wx-config --cxxflags --libs std` -o main 
myframe.cpp:5:1: error: ‘Myframe’ does not name a type 

Я довольно уверен, что ошибка связана с включениями, а не к неправильному коду

Вот исходные файлы (соответствующие части только):

main.cpp:

#include "main.h" 
#include "myframe.h" 

IMPLEMENT_APP(MyApp) 

bool MyApp::OnInit(){ 
    Myframe *menu = new Myframe(wxT("Application")); 
    menu->Show(true); 
    return true; 
}; 

main.h:

#include <wx/wx.h> 

class MyApp : public wxApp 
{ 
    public: 
    virtual bool OnInit(); 
}; 

myframe.cpp:

#include "main.h" 

Myframe::Myframe(const wxString& title) 
///^ERROR 
     : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(300, 300)) 
{ 
    ... 
} 

myframe.h:

#include <wx/wx.h> 
#include <wx/menu.h> 

class Myframe : public wxFrame 
{ 
public: 
    Myframe(const wxString& title); 

    ... 
}; 

...(function definitions,event table and enums) 
+3

Вам нужно '#include" myframe.h "в' myframe.cpp'. – songyuanyao

+0

@songyuanyao. Это приведет к множественному определению Myframe, потому что оно уже включено в main.cpp ... – westernCiv

+0

Вы не должны указывать определения функций в 'myframe.h', переместите их все в' myframe.cpp'. Объявления для файла заголовка, определения для файла реализации. – songyuanyao

ответ

1

Вы можете добавить #include <myframe.h> в файл "myframe.cpp". , потому что в файле myframe.cpp нет определения Myframe.

Смежные вопросы