【初心者歓迎】C/C++室 Ver.53【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/04/24(木) 07:23:05ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.59【環境依存OK】(実質Ver.52)
http://pc11.2ch.net/test/read.cgi/tech/1206809426/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0232デフォルトの名無しさん
2008/04/27(日) 18:20:580234デフォルトの名無しさん
2008/04/27(日) 18:42:37アセンブラを教えてくれる幼稚園や小学校があるならぜひ紹介してくれ
0235デフォルトの名無しさん
2008/04/27(日) 18:45:52関係ないが、ロシアにはハッキング教室がある。
企業情報を盗んで生計を立ててる卒業生もいるらしい。
0236デフォルトの名無しさん
2008/04/27(日) 18:53:07本の英小文字とキーボードの大文字がリンクとれなくて大文字のフリガナを親に書いてもらってたのを思い出した
0237デフォルトの名無しさん
2008/04/27(日) 18:55:590238デフォルトの名無しさん
2008/04/27(日) 19:53:59いったんメモリに命令群が展開されてそこから(?)実行されると思うのですが、
プログラムがメモリのどの位置に配置されたか分る方法ってないのでしょうか?
メモリに配置されたプログラムをダンプするプログラムを作りたいです (´・ω・`)
ヒントだけでもいいので教えてください。よろしくお願いします。
0239デフォルトの名無しさん
2008/04/27(日) 20:26:07ヒントどぞ〜
ttp://codezine.jp/a/article.aspx?aid=403
ttp://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0240デフォルトの名無しさん
2008/04/27(日) 20:35:26ヒントどうもありがとうございます。色々調べてるんですが、なにぶん初心者なもので理解に苦しみます ^^;
OpenProcess に ReadProcessMemory , CloseHandle 色々あって難しいですね。。。
0241デフォルトの名無しさん
2008/04/27(日) 20:45:43それでもWindowsはヌルい方なんだけどな。
0242デフォルトの名無しさん
2008/04/27(日) 21:22:540243デフォルトの名無しさん
2008/04/27(日) 21:50:590244デフォルトの名無しさん
2008/04/27(日) 21:54:35必ずテスト気を付けてしてるよ。
0245デフォルトの名無しさん
2008/04/27(日) 22:00:16参照できないのは、どうしてそういう仕様になっているのでしょうか?
this->付けたりとかusingしたりすれば良いのは知識としては知っているのですが、いまいちこの仕様に納得できません。
template <typename T>
class base {
public:
void func() {}
};
template <typename T>
class deri : public base<T> {
public:
void func2() {func();}
};
みたいにしたときです。
0246デフォルトの名無しさん
2008/04/27(日) 23:00:06T によって呼ばれる関数がフリー関数になったり、メンバ関数になったりするのが
わかりにくくて嫌な挙動だからだと思う
0247デフォルトの名無しさん
2008/04/27(日) 23:15:46int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
){
MessageBox(NULL,"Kitty on your lap","メッセージです", MB_OK);
return 0;
}
これってどこか間違ってますか?
0248デフォルトの名無しさん
2008/04/27(日) 23:16:30gcc -c func1.c func2.c
ar rcs libtest.a func1.o func2.o
だとオブジェクトファイルを生成したコンパイラでしかリンクできない
0249デフォルトの名無しさん
2008/04/27(日) 23:33:32bccならそれでコンパイル通るけど、VC++なら
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
TCHAR *lpCmdLine,
int nCmdShow
){
MessageBox(NULL,_T("Kitty on your lap"),_T("メッセージです"), MB_OK);
return 0;
}
こうやってうにこーどにしなきゃ駄目
0250デフォルトの名無しさん
2008/04/27(日) 23:34:04つ[extern "C"]
0251249
2008/04/27(日) 23:35:050252デフォルトの名無しさん
2008/04/28(月) 00:15:18返答ありがとうございます。
でも、先の例だとTに何が来ても、func()はbaseクラスに必ず存在すると思うんですが、、、
違いますか?
フリー関数というのは、baseクラスやderiクラスの外部にある関数ということですよね?
0253デフォルトの名無しさん
2008/04/28(月) 00:15:39おお、できた
サンクス!
0254デフォルトの名無しさん
2008/04/28(月) 00:18:45T内でtypedef 〜 func
とかやってる可能性もあるから。
0255デフォルトの名無しさん
2008/04/28(月) 00:21:55テンプレートクラス内で、別のテンプレートクラスを使用する時にエラーが出ます。
例:
template< class TYPE > class List
{
// Listに使うメソッドなど
};
template< class TYPE > class AAA
{
public :
List< TYPE > m_List; // ←エラー
};
凄く初歩的な質問かもしれませんが、何が悪いんでしょうか?
0256デフォルトの名無しさん
2008/04/28(月) 00:26:440257デフォルトの名無しさん
2008/04/28(月) 00:27:13ごめんよく読んでなかった。間違い
0259223
2008/04/28(月) 00:29:30でどうよ?
0260デフォルトの名無しさん
2008/04/28(月) 00:35:43すいませんちょっと違いました。
例:
template< class TYPE > class List
{
// Listに使うメソッドなど
};
template< class TYPE > class AAA
{
public :
function() { m_List.Add( new T ); } // ←「m_List」は宣言されていません
List< TYPE > m_List;
};
って感じにエラーが出ます。
>>258
やってみましたが、やっぱりエラーが出ます。。。
0261デフォルトの名無しさん
2008/04/28(月) 00:39:160262デフォルトの名無しさん
2008/04/28(月) 00:41:49function() { m_List.Add( new TYPE ); } の間違いです。
>>258
エラーは、「m_Listが宣言されてません」と出ます。
また、この例ではメソッドをクラス内で書いてありますが、
実際にはクラス定義のすぐ下で、
{
〜〜〜クラス定義
};
templeate< class TYPE > typename
class AAA::function()
{
m_List.Add( new TYPE );
}
のような感じでヘッダーファイルに記述してあります。
0263デフォルトの名無しさん
2008/04/28(月) 00:43:00C2065 m_Listは定義されていない識別子です。
とでます。
0264デフォルトの名無しさん
2008/04/28(月) 00:47:33g++ ならそのまま普通に通る。VCの場合は知らんけど
g++ -ansi -pedantic
でも通るからC++標準からみて問題はなさそう。
問題が再現するソース作ってコピペし、VC++使いに見てもらうのが良し。
0265デフォルトの名無しさん
2008/04/28(月) 00:53:110266デフォルトの名無しさん
2008/04/28(月) 00:54:05本当にすいません;
お騒がせしました。
0267デフォルトの名無しさん
2008/04/28(月) 00:55:00もう少し勉強してからまた来ます;
0268デフォルトの名無しさん
2008/04/28(月) 00:57:340269デフォルトの名無しさん
2008/04/28(月) 00:57:53>>258
ありがとうです。
テンプレートの特殊化があるために、baseクラスの定義が信用できないということですね?
0270デフォルトの名無しさん
2008/04/28(月) 02:46:37プロセスIDの指定→メモリ上の位置の取得→指定されたサイズだけデータを読み込む→ファイルに保存
といった感じかな??メモリ上の位置の取得とデータの読み込みの方法が分らない。。。。
誰かサンプルコードを書いてくれ。いや、サンプルコードを提供して頂けないでしょうか?
よろしくお願いします。
0271デフォルトの名無しさん
2008/04/28(月) 02:51:200272デフォルトの名無しさん
2008/04/28(月) 03:01:29ツール自体は持ってるんですけど、どんな風に動作してるのか、動作原理に興味があって質問しました。
邪魔になるようだったら以降控えます。すみませんでした。
0273デフォルトの名無しさん
2008/04/28(月) 03:13:10OSは?
0274デフォルトの名無しさん
2008/04/28(月) 03:15:250275デフォルトの名無しさん
2008/04/28(月) 03:21:52それはともかくReadProcessMemory。
あとOpenProcessも必要になるかな。
0276デフォルトの名無しさん
2008/04/28(月) 04:36:53テンプレート化されたクラスは、特殊化すれば中身は全然違うクラスになりうるということですよね?
どうしてこんな仕様になっているのでしょうか?特殊化する際は、インターフェイスは特殊化する前の
ものと同じにしないとだめ、という仕様の方がよっぽど自然な感じがするのですが、、
なんかいいことがあるんですか?
template <typename T>
class base {
public:
int a;
};
template <>
class base<int> {
public:
void a() {
std::cout << "aaaa" << std::endl;
}
};
0277デフォルトの名無しさん
2008/04/28(月) 07:13:54Borland C++Compilerとbcpadがあればcとc++の開発はだいたいできますか?
0278デフォルトの名無しさん
2008/04/28(月) 07:51:400279デフォルトの名無しさん
2008/04/28(月) 07:57:21その代わりpragmaが一切ないとか、実用性0でもいいです。
0280デフォルトの名無しさん
2008/04/28(月) 10:55:20operator()(引数)と書かなくてはならないですか?
class aaa {
public:
functor* fp;
};
class functor {
public:
int operator()(int);
};
aaa A;
A.fp->operator()(10); // これはコンパイルできる
A.fp(10); // これはできない。
これはしょうがないですか?
0281デフォルトの名無しさん
2008/04/28(月) 11:23:21class A {
public:
int m;
A(){m=0;}
A(int n) {m=n;} };
class B {
public:
A *p;
B(int n){p=new A; p->m=n;}
};
main(){
B z(10);
}
0282デフォルトの名無しさん
2008/04/28(月) 11:37:39rf(10);
0283デフォルトの名無しさん
2008/04/28(月) 11:38:590284デフォルトの名無しさん
2008/04/28(月) 14:49:290285デフォルトの名無しさん
2008/04/28(月) 15:20:08メタプロにおけるテンプレート特殊化というのは、通常プログラミングの
文脈で言う条件分岐(switch)にあたる。
実利的には、特殊化が無いとboostライブラリの大半が実現できなかったり
能力が落ちたりする。
boost/utility/enable_if.hppなんかは何やってるか解りやすいと思う。
0286デフォルトの名無しさん
2008/04/28(月) 18:32:09export が使える、準拠率の最も高いコンパイラとして知られているのは Comeau C++ だな。
0287デフォルトの名無しさん
2008/04/28(月) 20:14:24main()
{
printf("hello!");
return 0;
}
をコンパイルしてできたexeファイルをダブルクリックしてもコマンド
プロントっぽいのが一瞬でて消えてしまいます
コマンドプロントからhello.exeで使用するとちゃんとhello!と表示されます
前者のほうはOSが壊れていたりするからですか?
不安なのでアドバイスください;;
0288デフォルトの名無しさん
2008/04/28(月) 20:16:41プログラムが終了するとコマンドプロンプトも一緒に終了する。
そういうもん。
0289デフォルトの名無しさん
2008/04/28(月) 20:20:18ありがとうございます
自己解決しました
0290デフォルトの名無しさん
2008/04/28(月) 20:23:240291デフォルトの名無しさん
2008/04/28(月) 20:28:200292デフォルトの名無しさん
2008/04/28(月) 20:29:26みてみましたが、使い方とかがよくわかりません。ソースも中身がカラで無意味そうに見える(けど本当は意味があるんだろう)テンプレートばっかりで
ピンと来ませんでした。とりあえず
boost.org/libs/utility/
でも見てみます。あと、メタプログラミングを知れば利点がわかるということですか?
ありがとうございました。
0293デフォルトの名無しさん
2008/04/28(月) 22:07:280294デフォルトの名無しさん
2008/04/28(月) 22:25:51ごめんなさい、コンパイルしないで書き込んじゃいました
コンパイルしたらまた書き込みます
0295デフォルトの名無しさん
2008/04/29(火) 01:47:26error C4430ってのが出て、もう意味不明です。どういう事なんでしょう?
0296デフォルトの名無しさん
2008/04/29(火) 01:48:540297デフォルトの名無しさん
2008/04/29(火) 01:50:01オマイが今まで書いてきたプログラムはC++のような何かだったってこと
0298デフォルトの名無しさん
2008/04/29(火) 01:56:00#include<studio.h>
main()
{
}
これすらコンパイル出来ません…
0299デフォルトの名無しさん
2008/04/29(火) 01:57:18<stdio.h>
0300デフォルトの名無しさん
2008/04/29(火) 01:59:34{
}
0301デフォルトの名無しさん
2008/04/29(火) 02:01:23「C++はintを既定値としてサポートしていません」とか書かれてないか?
0302デフォルトの名無しさん
2008/04/29(火) 02:01:36int main(void)
{ return 0; }
0303デフォルトの名無しさん
2008/04/29(火) 02:02:320304デフォルトの名無しさん
2008/04/29(火) 02:04:36>>301
書いてあります。
0305デフォルトの名無しさん
2008/04/29(火) 02:06:18次からはそういう大事な情報を隠さないでくださいね
0306デフォルトの名無しさん
2008/04/29(火) 02:07:55はい、すみません。
0307デフォルトの名無しさん
2008/04/29(火) 03:49:16template<class X, class Xs>
struct List;
struct Nil;
template<class Xs, class X>
struct Cons
{
typedef List<X, Xs> type;
};
template<class Xs, class X>
struct Append;
template<class X, class Xs, class Y>
struct Append<List<X, Xs>, Y>
{
typedef Cons<X, typename Append<Xs, Y>::type> type;
};
template<class X>
struct Append<Nil, X>
{
typedef typename Cons<X, Nil>::type type;
};
0308デフォルトの名無しさん
2008/04/29(火) 06:10:13ありがとうございます。でもmain関数が書けません(泣)
簡単でいいですから、main関数も書いてもらえませんか?
0309デフォルトの名無しさん
2008/04/29(火) 07:17:220310デフォルトの名無しさん
2008/04/29(火) 07:39:34それくらいなら書けます。
0311デフォルトの名無しさん
2008/04/29(火) 14:06:38class MyShip{
private:
float x;
float y;
public:
void GetMyShipLocation(float* X,float* Y);
void SetMyShipDefault();
void MoveMyShip(int keybordstate);
};
void GetMyShipLocation(float* X,float* Y){
*X = x;
*Y = y;
}
GetMyShipLocation関数を使って、描画関数に値を渡したいのですが、
値がぶっとんでしまい、-107374176.000000と表示されてしまいます
自分ではもう訳がわからなくなってしまいました。解決方法をご教示願います。
0312デフォルトの名無しさん
2008/04/29(火) 14:10:310313デフォルトの名無しさん
2008/04/29(火) 14:11:46SetMyShipDefault関数を初回に動かして、
x = -55.0f;
y = 100.0f;
という値を入れています。
0314デフォルトの名無しさん
2008/04/29(火) 14:27:10色々とダメすぎ。C++を真面目に勉強することをお勧めする。
それはさておき、「描画関数」と「値を渡す」ところと、「値がぶっ飛んでしまう」ところのソースを晒せ。
0315デフォルトの名無しさん
2008/04/29(火) 14:30:20VOID GameBody( HWND hWnd ){
FPS_NOW = timeGetTime();
if(FPS_FLAG < 0){ FPS_FPS = 1000/(FPS_NOW-FPS_LAST) ; FPS_FLAG = 20 ;}
else{FPS_FLAG--;}
int keystatus = getKeybordState( g_pKeyboard );
char bill[256];
sprintf( bill, "%f %f %.02f" , g_Billbord[9].objPos.x , g_Billbord[9].objPos.y , FPS_FPS);
if(g_FullScreenFlag == FALSE){SetWindowText( hWnd , bill );}
switch(GameFlag){
case GAME_STANDBY:
MyShip Player;
Player.SetMyShipDefault();
GameFlag = GAME_START ;
break;
case GAME_START:
//Player.MoveMyShip(keystatus);
Player.GetMyShipLocation(&g_Billbord[9].objPos.x , &g_Billbord[9].objPos.y );
break;
}
FPS_LAST = FPS_NOW;
return;
}
0316デフォルトの名無しさん
2008/04/29(火) 14:36:05DxLibって奴か?
0317デフォルトの名無しさん
2008/04/29(火) 14:39:040318デフォルトの名無しさん
2008/04/29(火) 14:39:53vcのデバッグビルド時の未初期化変数の値と一致する
0319デフォルトの名無しさん
2008/04/29(火) 14:40:520320デフォルトの名無しさん
2008/04/29(火) 14:43:20MyShip Player; どう見ても原因はここだろ
0321デフォルトの名無しさん
2008/04/29(火) 14:45:080322デフォルトの名無しさん
2008/04/29(火) 14:46:000323デフォルトの名無しさん
2008/04/29(火) 14:50:34その通りでしたorz
すみません、自分でもすっかり見落としてました。
回答してくださった皆様、お手数おかけしました。
0324デフォルトの名無しさん
2008/04/29(火) 14:53:48久々に寝ることにします・・・。
0325デフォルトの名無しさん
2008/04/29(火) 22:29:14#include <stdio.h>
main()
{
int c;
scanf("%c", &c);
printf("%c", c);[
return 0;
}
エラー E2188 001.cpp 8: 式の構文エラー(関数 main() )
0326デフォルトの名無しさん
2008/04/29(火) 22:29:460327デフォルトの名無しさん
2008/04/29(火) 22:31:28どんまいw
0328325
2008/04/29(火) 22:37:25すいません;; ありがとうございました
0329デフォルトの名無しさん
2008/04/30(水) 02:41:59VisualStudio2005でライブラリを作りたくて色々試行錯誤してみたのですが・・・。
いまいちよくわからない状態でして。
用途についてですが、自分は学生でゲームを作っています。
言語では
DirectX
OpenGL
を使っています。
それに自分で使いやすいようにライブラリを作るつもりで調べてみました。
どうかやさしくおねがいします・・・・。
0330デフォルトの名無しさん
2008/04/30(水) 02:43:21さっさと質問すれば?
0331デフォルトの名無しさん
2008/04/30(水) 02:45:47これが簡単
DarkGDK
http://pc11.2ch.net/test/read.cgi/tech/1208941132/
■ このスレッドは過去ログ倉庫に格納されています