今回はQT creatorにおける構造体のコピーについて質問させていただきます.
c++歴は1年と少し,qt歴は半年ほどです.
以下に今回作成したプロジェクトの作成方法を記載します.
なお,qtのバージョンは5です.
環境はVMWare Lubuntuで,qtcreatorはapt-getから入れました.
導入のコマンドは以下です.
sudo apt-get install build-essential
sudo apt-get install qtcreator
sudo apt-get install qt5-doc qtbase5-examples qtbase5-doc-html
参考までにqtcreatorを導入したサイトを載せます.
http://www.ubuntubuzz.com/2015/05/how-t ... -1504.html
「プロジェクト作成」
1.qt creatorを起動
2.新しいプロジェクト
3.qtウィジェットアプリケーションを選択し「選択」を押す
4.名前にstructをいれ「次へ」を押す
5.キットの選択は「デスクトップ」
6.クラス情報も変更せず「次へ」
7.プロジェクト管理も変更せず「完了」
以上で,struct.pro,mainwindow.h,main.cpp,mainwindow.cppといったファイルが自動的に作られます.
ヘッダファイルに以下の行を追加しました.
なお,今回はQString,vectorとQDebugを使用していますので,
そのインクルードも必要です.
mainwindow.hに追加した行
#include<QString>
#include<QDebug>
#include<vector>
struct Combo{
QString device_name;
std::vector<QString> function;
};
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
//ここから追加しました
Combo device1;
device1.device_name=="ant";
device1.function.push_back("good bye");
device1.function.push_back("walk");
qDebug()<<device1.function[0];
Combo device2=device1;
qDebug()<<device2.device_name;
//ここまで追加した分です
return a.exec();
}
ビルド(Ctr+b)と実行(Ctr+r)はqtcreator内で行っています.
実行結果は以下です.
"good bye"
""
結果を見ると構造体がコピーできていません.
また,いろいろ試行錯誤しましたが,どうも構造体を関数に渡すこともできないようです.
ですので,質問させていただきたいのは,qtcreatorにおける構造体のコピーの仕方です.
私のプログラムに何か不備がある場合は,その不備を指摘していただきたいです.
また,別の方法でコピーできる場合はその方法を教えていただきたいです.
あわせて,構造体を関数渡しすることができるかの検証もお願いしたいです.
つまり,mainで定義したdevice1を関数内から利用できるかということです.
私の環境では上記の構造体を関数に渡すことができませんでした.
よろしくお願いいたします.