全2241件中41~60件表示
  • 親クラスのポインタで派生クラスの関数呼び出し

    下記のようなクラス構成があるとします。 説明のため簡略化しています。 [Test.h] class CParent { protected: int nParent; public: CParent(){nParent = 10;} ~CParent(){}; virtual int func1(){ // (*1) return nParent; } }; class CSub : public CParent { int m_nSub1; // 派生クラスにしかないメンバ変数 int m_nSub2; // 派生クラスにしかないメンバ変数 public: CSub(){m_nSub = 20;} ~CSub(){}; int func1(){ // (*3) return nParent*2; // 20 } // 派生クラスにしかないメンバ関数 int func2() // (*4) { m_nParent; // 10 return m_nSub1; // 不定値 } int SetData(int n) // (*5) { m_nSub2 = n; return m_nSub2; } }; [Test.cpp] void main() { CParent parent; // 親クラスのオブジェクト CParent* pParent = &parent; // 親クラスのオブジェクトを指すポインタ int nRet = 0; nRet = pParent->func1(); // (*1) // サブクラスのポインタ型にキャストする CSub* pSub = (CSub*)pParent; // (*2) nRet = pSub->func1(); // (*3) nRet = pSub->func2(); // (*4) nRet = pSub->SetData(60); // (*5) } (*3)ではpSubの指すオブジェクトが親クラス(CParent)のため、ポリモーフィズムのメカニズムに従ってCParent::func1()が呼ばれ10が返ってきます。ここまでは想定通りです。 次の(*4)ですが、これはCSub::func2()が呼ばれています。なぜこの呼び出しで子クラスの関数を呼ぶことが出来るのでしょうか? 実際その動作をさせたいのですが、なぜそうなるのかが分かりません。想定ではpSubが指す先は親クラスのため、子クラスにしかないメンバ関数func2()は呼べないはずです。 このコードでは、CSubのコンストラクタは通りませんので(そもそもCSub型のインスタンスは実体化していない)、(*4)の呼び出しでは不定値が返ります。また、(*5)は期待通り動作し、戻り値60が返っています。 これは危険な事をしているのでしょうか? 期待通りではあるのですが、なぜこのような動作になるのか理解できません。 上記のようなことをしたい場合、どのように記述するべきでしょうか?

  • VS2012のプロパティシートの編集

     こんにちは。 VS2012 Express EdtionでDirectXのライブラリを使えるようにしているのですが 毎回設定するのはめんどくさいので プロパティシートを編集してそれを取り入れて設定させようと思っています。 しかしどのように編集したらいいか分かりません。 ネットで調べてもそれらが詳しく載っているのをみかけなかったからここで質問したしだいです。 プロパティシートというのは、propsファイルのことです。 ここで編集するのですが、ディレクトリ指定などどのようにやればいいのでしょうか?

  • VS2012のプロパティシートの編集

     こんにちは。 VS2012 Express EdtionでDirectXのライブラリを使えるようにしているのですが 毎回設定するのはめんどくさいので プロパティシートを編集してそれを取り入れて設定させようと思っています。 しかしどのように編集したらいいか分かりません。 ネットで調べてもそれらが詳しく載っているのをみかけなかったからここで質問したしだいです。 プロパティシートというのは、propsファイルのことです。 ここで編集するのですが、ディレクトリ指定などどのようにやればいいのでしょうか?

  • PicBasic Proのプログラミングについて

    シリアル通信、PicBasic Proによるプログラミングに関する質問です。 便宜上、PicBasic Proを以後PBPと記します。 専門的な質問のため長くなりますが、よろしくお願いいたします。 私は、東京デバイセズ製「IWS940」という筋電位を測定できるセンサモジュール(以後センサ)を用いて電子工作を行っています。このセンサは得られた筋電位をシリアル出力するもので、PICマイコン16F88のRX端子(8番ピン)に接続し、データを取り込もうとしています。 センサに関する詳細は以下の通りです。 電源電圧 5V(±5%) 消費電流 約 60mA 絶縁・アイソレーション 1kVrms(設計値) 利得 744.192 サンプリング周波数 1,638.4Hz 量子化ビット数 10bit 最小分解能 約 20μV 測定レンジ 5.375mVp-p 通信規格 シリアル 5V TTL レベル 通信速度 38,400bps パリティなし, ストップビット 1, フロー制御なし, データビット 8bit その他の情報は長くなるのでここでは省略し、以下にセンサのデータシートへのリンクを記載しています。 → https://tokyodevices.jp/system/attachments/files/000/000/192/original/IWS940-PCB_MANUAL.pdf?1427672119 PBPのソースコードは以下の添付画像の通りなのですが、思った動作をしてくれません。 HSERIN命令を使用しているのですが、どうやら「5000,sub,」の部分が実行され、しっかり5秒間停止したのち、「55-55 55-47」と表示されます。何度実行しても同じくこの値です。 HSERIN命令は、指定した条件の受信を完了するまで処理を譲らないものです。また、時間とラベル名を指定することで、受信できない状態がその時間だけ続いたとき、指定したラベル位置へ処理をジャンプすることができます。 今はまさにその動作をしているので困っています。 オシロスコープにより、センサから出力されるパルスの振幅が約4[V]出ていることを確認しています。よって原因はプログラムにあると考えているのですが、プログラムのどの部分がどうおかしいのか自力では分かりません。 分かる方、助けてください。よろしくお願いいたします。 ※画像が1枚しか添付できないため、imgurのリンクを記載します。ご参照ください。 【回路】http://i.imgur.com/haIF1Uv.jpg 【LCD表示画面】http://i.imgur.com/ADO6KFT.jpg 【ソースコード前半】http://i.imgur.com/v0rNbiU.png 【ソースコード後半】http://i.imgur.com/lYUf2gG.png

  • VS2012のプロパティシートの編集

     こんにちは。 VS2012 Express EdtionでDirectXのライブラリを使えるようにしているのですが 毎回設定するのはめんどくさいので プロパティシートを編集してそれを取り入れて設定させようと思っています。 しかしどのように編集したらいいか分かりません。 ネットで調べてもそれらが詳しく載っているのをみかけなかったからここで質問したしだいです。 プロパティシートというのは、propsファイルのことです。 ここで編集するのですが、ディレクトリ指定などどのようにやればいいのでしょうか?

  • VS2012のプロパティシートの編集

     こんにちは。 VS2012 Express EdtionでDirectXのライブラリを使えるようにしているのですが 毎回設定するのはめんどくさいので プロパティシートを編集してそれを取り入れて設定させようと思っています。 しかしどのように編集したらいいか分かりません。 ネットで調べてもそれらが詳しく載っているのをみかけなかったからここで質問したしだいです。 プロパティシートというのは、propsファイルのことです。 ここで編集するのですが、ディレクトリ指定などどのようにやればいいのでしょうか?

  • 実行ファイルにDLLファイルを同梱したいです。

    http://kidd0320.hatenablog.com/entry/2014/06/06/142355 EXEにDLLファイルを同梱するためこちらのサイトを参考にしたのですが、ソフトを別のパソコンに入れたところ”MSVCP120.dllがないため、プログラムを開始できません。” と表示されてしまいます。 開発環境はC++でOPENCVを使っています。 開発ソフトはMicrosoft Visual Studio Express 2013 for Windows Desktopを使っています。 構成はReleaseでプラットフォームはwin32です。 インクルードファイルなどは以下のとおりです。 #include "stdafx.h" #include <stdio.h> #include <windows.h> #define snprintf _snprintf #include <opencv/highgui.h> #include <iostream> #include<fstream> using namespace std; どういった原因が考えられるでしょうか。 どなたかご教授いただけないでしょうか。

  • 実行ファイルにDLLファイルを同梱したいです。

    http://kidd0320.hatenablog.com/entry/2014/06/06/142355 EXEにDLLファイルを同梱するためこちらのサイトを参考にしたのですが、ソフトを別のパソコンに入れたところ”MSVCP120.dllがないため、プログラムを開始できません。” と表示されてしまいます。 開発環境はC++でOPENCVを使っています。 開発ソフトはMicrosoft Visual Studio Express 2013 for Windows Desktopを使っています。 構成はReleaseでプラットフォームはwin32です。 インクルードファイルなどは以下のとおりです。 #include "stdafx.h" #include <stdio.h> #include <windows.h> #define snprintf _snprintf #include <opencv/highgui.h> #include <iostream> #include<fstream> using namespace std; どういった原因が考えられるでしょうか。 どなたかご教授いただけないでしょうか。

  • VS2012のプロパティシートの編集

     こんにちは。 VS2012 Express EdtionでDirectXのライブラリを使えるようにしているのですが 毎回設定するのはめんどくさいので プロパティシートを編集してそれを取り入れて設定させようと思っています。 しかしどのように編集したらいいか分かりません。 ネットで調べてもそれらが詳しく載っているのをみかけなかったからここで質問したしだいです。 プロパティシートというのは、propsファイルのことです。 ここで編集するのですが、ディレクトリ指定などどのようにやればいいのでしょうか?

  • 実行ファイルにDLLファイルを同梱したいです。

    http://kidd0320.hatenablog.com/entry/2014/06/06/142355 EXEにDLLファイルを同梱するためこちらのサイトを参考にしたのですが、ソフトを別のパソコンに入れたところ”MSVCP120.dllがないため、プログラムを開始できません。” と表示されてしまいます。 開発環境はC++でOPENCVを使っています。 開発ソフトはMicrosoft Visual Studio Express 2013 for Windows Desktopを使っています。 構成はReleaseでプラットフォームはwin32です。 インクルードファイルなどは以下のとおりです。 #include "stdafx.h" #include <stdio.h> #include <windows.h> #define snprintf _snprintf #include <opencv/highgui.h> #include <iostream> #include<fstream> using namespace std; どういった原因が考えられるでしょうか。 どなたかご教授いただけないでしょうか。

  • ファイル取得・日付比較・削除を行うプログラム

    私は今、特定のフォルダにあるファイル(ファイル名はすべて日付 例:20160720.csv)をすべて取得し、取得したファイル名と現在時刻を比較し、現在時刻より1年以上過去のもの(現在が20160720だとすると20150720より古いファイル)を削除する というプログラムを作ろうとしています。(現在取り組んでいるのは取得したファイルを配列に入れて、forループで1つ1つ1年間離れているかチェックするような感じです。) ファイル取得はfindfirstfileで取得・removeで削除を行うことは調べてわかったのですが、それを使って上記のようなプログラムを作るやり方がまだわからないのです。(C・C++に触れてまだ半年ぐらいの身なので…) なるべく自分で調べて作り上げた方が自分の力になるのはわかっていますが、今回は全く思いつかないので、みなさんがどのようなコーディングをするのか、コードと解説を添えて教えて頂けるとありがたいです。 他の言語で作成する事は考えておりません。C・C++環境で動作させたいです。 開発環境はWindows 7 32bitでVisualStudio2013を利用しています。 宜しくお願い致します。

  • リンカーエラー

    Visual Studio 2015で エラー LNK1104 cannot open file 'opencv_core220d.lib,opencv_highgui220d.lib,opencv_video220d.lib,opencv_ml220d.lib,opencv_legacy220d.lib,opencv_imgproc220d.lib' というエラーがでて実行できません。どなたか助けてください

  • ゲームの解析のプログラムについて

    自分は、C#でパソコンのゲームの改造コードを解析するプログラムを作成しています。 ただ、そこでわからないことがありまして まずROMを読み込んで、動いているメモリアドレス(16進数)を検索する機能をつけたいんですがどうすれば良いでしょうか? 例えば、キャラクターが動いたら変化した座標や位置データを調べるようにしたいんですが

  • C++ クラスの作り方

    Windows10の上で、Visual Studio Community2015 を使ってC++を勉強中の者です。 Time クラスというのを定義して使おうとしましたが、クライアント側のプログラム作成中にエラーメッセージが出てきて、色々考えましたがどこが悪いのかわかりません。 プログラム自体は時刻を設定してそれを表示させるだけのものです。 詳しい方がいらっしゃいましたら、ご教授お願い致します。 問題のエラーメッセージ; "consoleApplication69.cpp" を作成中にエディターの中で、波型の赤線が出ているところにカーソルを持っていくと、次の3か所でそれぞれ次のようなエラーメッセージが出てきます。 (1) #include "time3.h" のところ: 「ソースファイルをひらけません。"time3.h"」 (2) 関数 incrementMinute( )のプロトタイプのところ:「不完全な型は使用できません。」 (3) 最初のパラメーター Time & のところ:「識別子 Time が定義されていません。」 以下に、 1: 私が作ったTimeクラスの定義のあるヘッダー "time3.h", 2: メンバー関数の定義ファイル "time3.cpp" 3:クライアント側プログラム "consoleApplication69.cpp" の3つのソースコードをコピーします。 "time3.cpp" については長いので、上の半分だけにしました。 ****************************************************** 1: "time3.h" ******************************************************** #pragma once // header file for Time class // time3.h #ifndef TIME3_H #define TIME3_H class Time { public: Time(int = 0, int = 0, int = 0); ~Time(); void setTime(int, int, int); void setHour(int); void setMinute(int); void setSecond(int); int getHour(); int getMinute(); int getSecond(); void printUniversal(); void printStandard(); private: int hour; int minute; int second; }; #endif *********************************************** 2: "time3.cpp" ************************************************ #include <iostream> #include <iomanip> #include <cstdlib> #include <ctime> #include <cmath> #include <cstring> #include "time3.h" using namespace System; using namespace std; Time::Time(int hr, int min, int sec) { setTime(hr, min, sec); } void Time::setTime(int hr, int min, int sec) { setHour(hr); setMinute(min); setSecond(sec); } void Time::setHour(int hr) { hour = (0 <= hr && hr <= 23) ? hr : 0; } void Time::setMinute(int min) { minute = (0 <= min && min <= 59) ? min : 0; } void Time::setSecond(int sec) { second = (0 <= sec && sec <= 59) ? sec : 0; } ********************************************************* 3: "consoleApplication69.cpp" ********************************************************* // ConsoleApplication69.cpp : メイン プロジェクト ファイルです。 #include "stdafx.h" #include <iostream> #include <iomanip> #include "time3.h" using namespace System; using namespace std; //prototype void incrementMinute(Time &, const int); int main() { Time t; t.setHour(2); t.setMinute(10); t.setSecond(30); cout << " current time is "; cout << setfill('0'); cout << setw(2) << t.getHour() << ":"; cout << setw(2) << t.getMinute() << ":"; cout << setw(2) << t.getSecond() << "\n"; return 0; } // function void incrementMinute(Time &tt, const int num) { // まだ未定義 } またソリューションエクスプローラーの画面写真も添付します。 ヘッダーファイルもインクルードしていますし、ソリューションの中に入れたつもりですが、なぜ Time が定義されていないといわれるのでしょうか? どうぞよろしくお願いいたします。

  • EXEにDLLファイルを同梱したいです。

    http://kidd0320.hatenablog.com/entry/2014/06/06/142355 EXEにDLLファイルを同梱するため、こちらのサイトを参考にしたのですが、ソフトを別のパソコンに入れたところ”MSVCP120D.dllがないため、プログラムを開始できません。” と表示されてしまいます。 開発環境はC++でOPENCVを使っています。 開発ソフトはMicrosoft Visual Studio Express 2013 for Windows Desktopを使っています。 構成はReleaseでプラットフォームはwin32です。 どうすればよいでしょうか。 どなたかご教授いただけないでしょうか。

  • C言語のプログラミングの関数と配列を用いてそんなに

    C言語のプログラミングの関数と配列を用いてそんなに難しくないプログラムを考えているのですが、何かいいプログラムはないでしょうか?簡単なゲームや、簡単な貯金計算など種類は問いません。 そこまで難しくない何かいいプログラムを教えてください。

  • Visual C++ 2010 Express相当

    こんにちは。 できれば無料のアプリを探していますが有料でも構いません。 Visual C++ 2010 Expressで作られたアプリを使いたいので、 起動に必要なランタイムをDLしようにもVisual C++ 2010 Expressが見当たりません。 詳しい事が分からないのですが、 新しいVisual C++ 2016とかをインストールすれば、 代用が効き起動ができますか? 現状でダウンロードできるものでベストのVisual C++はどれですか?

  • 並列化プログラムの作成方法について

    物理計算の並列化についてお尋ねします。計算機環境(GPU, メモリ分散(ハブ)、メモリ共有(CPU内での並列))、コンパイラの選択とかいろいろ条件があると思います。また、作りこみの度合い(本気度)によっても違うと思います。特に並列計算は並列化の度合いによって速度が急激に伸びるなどいろいろ特性があると思います。 現時点では、 通常のパソコン(Core-i7)で、コンパイラはintel fortran, OSはWindows10というごく普通の環境です。Cygwinのgfortran, Visual studioなどもあります。 物理プログラムは、構成として以下のようです。 2次元空間の時間発展の計算です。 do n=1,nt do i=1,nx ! x方向格子へのループ do j=1,ny ! y要綱格子へのループ enddo ! x方向格子ループの端 enddo ! y方向格子ループの橋 enddo ! 時間方向ループの終端 stop end 時間発展のループの中に、空間方向のループが何回も出てくるという構成です。計算が遅くなる理由は空間方向の格子数が極端に増えるからです。 このような場合、計算の速度を向上させるための並列化の方法についてゼロベースで教えて頂きたいのですが。ゼロベースなので、何から手を付けるべきかということですが。 よろしくお願いします。

  • 基本情報前期のほぼすべてのパターンの問題を収録した

    基本情報前期のほぼすべてのパターンの問題を収録した問題集があるなら教えてください。

  • 基本情報では疑似言語とC言語どちらも勉強しないとい

    基本情報では疑似言語とC言語どちらも勉強しないといけないのですか?