-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)
Вам нужно '#include" myframe.h "в' myframe.cpp'. – songyuanyao
@songyuanyao. Это приведет к множественному определению Myframe, потому что оно уже включено в main.cpp ... – westernCiv
Вы не должны указывать определения функций в 'myframe.h', переместите их все в' myframe.cpp'. Объявления для файла заголовка, определения для файла реализации. – songyuanyao