我得到了典型的“..。在此上下文错误中是私有的。你能告诉我我哪里做错了吗?为了可读性,代码被缩短了。
在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类,但它被正确地使用了(我可能是盲人?)就像以前这样。
有人能解释一下我做错了什么吗?
发布于 2015-02-04 03:56:49
使用非限定类名,friend声明声明周围名称空间中具有该名称的类是朋友类(如果存在这样的类)。所以这相当于
friend class GuiController::SceneEditorPluginWidgetController;但是,您的注释表明该类实际上位于全局名称空间中,而不是GuiController中,因此这并不能使它成为朋友。您需要正确地对其进行限定:
friend class ::SceneEditorPluginWidgetController;https://stackoverflow.com/questions/28307374
复制相似问题