【发布时间】:2015-04-03 03:33:35
【问题描述】:
我收到典型的“...在此上下文中是私有的”错误。 你能告诉我我做错了什么吗? 为了便于阅读,代码被缩短了。
在 SceneEditorWidgetController 类中: (settingsdialog和这里使用的变量在header中定义)
SceneEditorPluginWidgetController::SceneEditorPluginWidgetController()
{
}
void SceneEditorPluginWidgetController::configured()
{
priorKnowledge_setting = settingsDialog->priorKnowledgeProxyFinder->getSelectedProxyName().toStdString(); //This is the context
}
我的班级 SettingsController.h
namespace Ui {
class SettingsController;
}
namespace GuiController {
class SettingsController : public QDialog
{
Q_OBJECT
friend class SceneEditorPluginWidgetController;
public:
explicit SettingsController(QWidget *parent = 0);
~SettingsController();
private: //it is private here
Ui::SettingsController* ui;
IceProxyFinderBase* priorKnowledgeProxyFinder;
};
}
我无法修改 IceProxyFinderBase 类,但它以前就是这样使用的(我可能是盲人?)。
谁能解释一下我做错了什么?
【问题讨论】:
-
SceneEditorPluginWidgetController是否在同一个命名空间GuiController中?如果不是,那么不合格的friend声明指的是不同的类。 -
SceneEditorWidgetController 没有命名空间,我该如何声明?
-
你的意思是它在全局命名空间中?将其限定为
::SceneEditorPluginWidgetController。 -
好的,我知道了。谢谢,有时你只是瞎了眼!