您好,我知道另一篇有關鏈接errorr和static關鍵字在C++中,但我認爲我所做的一切都是正確的從靜態函數原因鏈接錯誤返回靜態列表
我宣佈和PluginCollection.h
定義我的功能#ifndef PLUGINCOLLECTION_H
#define PLUGINCOLLECTION_H
#include <QList>
#include "PluginA.h" //this include Plugin.h
namespace PluginCollection
{
static QList<Plugin *> get_plugins();
}
QList<Plugin*> PluginCollection::get_plugins()
{
static QList<Plugin*> list;
list.push_back(new PluginA());
return list;
}
#endif // PLUGINCOLLECTION_H
和我有關派生 類重寫成員函數鏈接錯誤,所以如果我的類插件有這個純虛成員函數:
virtual QString get()=0;
virtual QString set()=0;
virtual QString print()=0;
我有:
- 鏈接錯誤外部辛博爾的QString __cdecl PluginA :: GET(...)
- 鏈接錯誤外部辛博爾的QString __cdecl PluginA ::集(...)
- 鏈接錯誤外部辛博爾的QString __cdecl PluginA ::打印(...)
,然後調用它mainwindow.cpp構造:
ui->setupUi(this);
ui->tabWidget->clear();
for(Plugin* p : PluginCollection::get_plugins())
{
build_tab_from_plugin(p);
}
p.s.:i'm使用Qt Creator的與msvc14
這不是你如何使用靜態。靜態函數是靜態的一些類或模塊,而不是全局命名空間 –
@DavidHaim內聲明的功能,通常是。但是,爲了組織的目的,您可以將靜態函數放置在其TU中的名稱空間中。但是,我知道這不是OP正在嘗試的。 – StoryTeller
您的換檔鍵是否損壞,tuttomax?這不是與你的同學發短信。句子以大寫字母開頭。 –