Нестатическая ссылка на члене Ошибка C2352

Добрый день.
Я пишу плагин с FireBreath. Крошечная проблема возникла из-за моих слабых знаний C ++, см. Код ниже.

Я не могу понять, почему функция FB::PluginWindowWin::getBrowserHWND(), что возвращает HWND
не хочу работать как HWND за GetWindowRect(hWnd, &rect) функция.

Компилятор подчеркивает FB от FB::PluginWindowWin::getBrowserHWND() и говорит мне, что
«Нестатическая ссылка на элемент должна быть указана, а не заданный объект» (Это мой перевод, сообщение на русском языке, но я верю, что оно по-прежнему имеет тот же смысл)

Получил эту ошибку:

Error C2352 FB::PluginWindowWin::getBrowserHWND:illegal call of non-static member function

Код:

TestPlugin.cpp
#include "Win/PluginWindowWin.h"#include "JSObject.h"#include "variant_list.h"#include "DOM/Document.h"#include "global/config.h"#include <Windows.h>
#include "TestPluginAPI.h"
///////My Functions////////

FB::variant PosTest()
{
RECT rect;
HWND hWnd;
hWnd = FB::PluginWindowWin::getBrowserHWND();
if(GetWindowRect(hWnd, &rect))
{

int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
int left = rect.left;
return left;
}
}TestPlugin.h
#include "Win/PluginWindowWin.h"#include <string>
#include <sstream>
#include <boost/weak_ptr.hpp>
#include "JSAPIAuto.h"#include "BrowserHost.h"#include "TestPlugin.h"#include <Windows.h>

/////Declarations/////

//Rect
BOOL WINAPI GetWindowRect(HWND hWnd, LPRECT lpRect);

//Pos Test
FB::variant PosTest();

0

Решение

Эта ошибка будет означать, что getBrowserHWND() это не static метод, и, следовательно, для его вызова требуется экземпляр объекта.

Другими словами, вам нужно иметь объект типа FB::PluginWindowWinтогда вы можете назвать это так:

hWnd = myPluginWindowWin.getBrowserHWND();
4

Другие решения

Этот код работает для меня очень хорошо:

HWND myPluginAPI::getBrowserHwnd() {
FB::PluginWindow* pluginWindow = getPlugin()->GetWindow();
FB::PluginWindowWin* w = (FB::PluginWindowWin*)(pluginWindow);
HWND hwndBrowser = GetAncestor( w->getHWND(), GA_ROOTOWNER );
return hwndBrowser;
}
1

По вопросам рекламы [email protected]