class A
{
pointer* p;
template<class T> f(T a)
{
p->property()->doSomething(a); // doSomething is a template function
}
};
上記はコンパイルされませんが、テンプレート関数のメンバポインタには安全ではありませんがアクセスしたいと思います。私がこれをしたいのは、 'p-> property() - > doSomething(a)'が本当に本当に本当に長く、私はそれを書き直そうとしています(そして#defineを使いたくないからです)。だから、どうやってそのようなことをするのですか?テンプレート関数のメンバポインタにアクセスする方法
編集:doSomethingのは、サードパーティの機能である...しかし、私はそれがこのようなものだと思う:
template<class T>
void doSomething(T a)
{
// something
}
編集:
#include <QMainWindow>
#include <QtNetwork>
#include <QtWebKit>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void replyFinished(QNetworkReply*);
private:
Ui::MainWindow *ui;
QNetworkAccessManager *nam;
QUrl _url;
void outputHeader(QNetworkReply*);
template<class T> void writeToOuput(T arg)
{
ui->textEdit->append(QString("%1").arg(arg));
}
};
編集:ここではエラーがあります、ここで実際のコードです私は次のようになります: '不完全な型の無効な使用:: MainWindow' 私はそれをクリックすると、この行に移動します 'ui-> textEdit-> append(QString( "%1")。 'コード内
編集:ここに別のエラーがあります: 'Forward宣言のUi :: MainWindow' 私はそれをクリックすると、どこにも行きません。
'doSomething'とそのコンテナ' class'の定義だけでなく、コンパイラの出力を記載してください。 –
これが間違っている理由を知るには十分な情報がありません!型ポインタに、型Tのオブジェクトを引数として受け入れるdoSomethingメソッドを持つオブジェクトへのポインタを返すメソッドプロパティがある場合、何も間違いありません。しかし、私はこれが事実ではないと思う...コンパイルしないものの完全なサンプルを提供してください! – PierreBdR
'pointer'とは何ですか? – hmjd