私は C++ と Qt は初めてですが、数日間いじっており、金曜日までに製品の基本的なプロトタイプを作成する必要があるため、7 年間の PHP を変換する時間はあまりありません。 C++ を習得するには一生かかると確信しているため、知識を C++ の知識に変換します。小さなビットとバイトに関する知識が存在しないため、ここ数日、時々立ち往生しています。現時点では、インターネットで何を探すべきかさえわかりません。
まず、Qt をフレームワークとして使用して、PHP アプリケーションと対話できる単純な GUI ネットワーク クライアントを実行しています。このアプリケーションで非常に単純な WebAPI クラスを作成し、クラス "webapi" を作成したいと考えました。シナリオは非常に単純です。ユーザーがアプリケーションを起動すると、アプリケーションはユーザーがログインしているかどうかを確認します。そうでない場合は、ログイン ダイアログが開きます。ダイアログに情報 (ユーザー名/パスワード) を入力すると、ユーザー オブジェクトが入力され、メソッド「authenticate」が呼び出されます。
次に、authenticate メソッドfUser
は webapi クラスのメソッドを呼び出して、サーバーのデータベースに対してユーザーを認証するための情報を保持する要求をサーバーに送信します。
コードでは次のようになります: Savor.cpp:
user = new User();
while ( user->isLoggedIn() != true )
{
LoginDialog loginWindow;
loginWindow.setModal(true);
int result = loginWindow.exec();
if ( result == QDialog::Accepted )
{
user->authenticate(loginWindow.getUsername(), loginWindow.getPassword());
if ( !user->isLoggedIn() )
{
loginWindow.setUsername(loginWindow.getUsername());
loginWindow.exec();
}
}
else
{
exit(1);//exit with code 1
}
}
ユーザー.cpp:
void User::authenticate(QString username, QString password)
{
qDebug() << username;
qDebug() << password;
if ( username != "" && password != "")
{
webapi wapi;
loggedIn = wapi.fUser(this);
}
else
{
loggedIn = false;
}
}
webapi.cpp:
/**
Represents the fUser method on the server,
it wants to get a user object
the user will need to be authenticated with this
then all infos about user are transfered (RSA Keypair etc)
* @brief webapi::fUser
* @param username
* @param password
* @return User
*/
bool webapi::fUser(User baseUser)
{
return true;
}
これで、メソッドで現在何もしていないことがはっきりとわかりますwebapi::fUser
。実際、私は自分が返したいものを返していません。ブール値の代わりに、User オブジェクトを返したいと思います。実際には、パラメータを介して最初に取得したものと同じです。ただし、これを行うと、コピー コンストラクター エラーが発生します。(私のsavor.h
ファイルでは、プライベート属性をポインターとして宣言しました => User *user;
)
fUser
問題は、メソッドを呼び出すときに何が間違っているのかということです。メソッドにユーザー オブジェクト自体を単純に渡すことができないのはなぜですか? const
、およびポインターと、いつ何を使用するかを完全に理解することはできませんでした。
Qtクリエーターでは、タイトルのようにエラーをスローするMS Visual C++コンパイラーを実際に使用しています。
C2664 'webapi::fUser': パラメータ 1 を 'User *const' から 'User' に変換できません
http://msdn.microsoft.com/en-us/library/s5b150wd(v=vs.71).aspxこのページでこれがいつ発生するかを説明していますが、唯一の解決策はオブジェクト自体の変換です。
その場合、問題全体に間違った方法でアプローチする可能性があります。
この問題に関するあなたのヒントと助けを楽しみにしています。どうもありがとうございました。