我得到典型的'...在此上下文中是私有'错误。 你能告诉我我做错了什么吗? 为了便于阅读,缩短了代码。
在SceneEditorWidgetController类中的: (settingsdialog和此处使用的变量在标题中定义)
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类,但它之前使用的确如此(我可能是盲目的?)。
有人可以解释一下我做错了吗?
答案 0 :(得分:16)
使用非限定类名,friend
声明声明该名称的类<周围命名空间中的是朋友,如果存在这样的类。所以这相当于
friend class GuiController::SceneEditorPluginWidgetController;
但是,您的评论说该类实际上位于全局命名空间中,而不是GuiController
,因此这不会使其成为朋友。您需要正确地对其进行限定:
friend class ::SceneEditorPluginWidgetController;