C++相談室 part14
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGSystem.out.println("みなさんC++をやりましょう。");
System.out.println("てか突っ込めよ!>>2-1000");
前スレpart13 http://pc3.2ch.net/test/read.cgi/tech/1038031395/
関連スレは前スレを見ましょう。
0153デフォルトの名無しさん
NGNGどう上手くいかないのかを良く観察汁。
そして、それが何故なのかを考える。
そして、型の違いに注目すると...。
0154デフォルトの名無しさん
NGNG「整数の出力は8進、10進、16進の3種類で行えます」
ってあったけど、それが答えかな?
とすれば、浮動小数点は10進のみ?
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG次のようなエラーが出てしまって困っています。
LINK : fatal error LNK1104: ファイル "nafxcwd.lib" を開けません。
どうしたらよいのでしょうか?
0157デフォルトの名無しさん
NGNGnafxcwd.libをパスの通っているところに置く
0158デフォルトの名無しさん
NGNG初心者で書いてることが分からないのですが・・・、
nafxcwd.libは何なのでしょうか?
パスの通っているところに置くというのも分からないので
教えてください。
0159デフォルトの名無しさん
NGNGコマンドラインに何とタイプしてコンパイルしてる?
0160デフォルトの名無しさん
NGNGパスの意味がわからなかったら、
とりあえず、コマンドプロンプトから *.exe を実行しようと試みよ。
怒られたら
set PATH
とタイプして、[Enter]を押せ。そして、そこに表示されるものの意味を調べろ。
0161デフォルトの名無しさん
NGNG見てみたらnafxwd.libってMFCのデバッグのスタティック用のライブラリみたい。
君のコンパイラがVCでかつProfessional以上ならコンパイルできるはず。
スタンダードならコンパイルできない。設定で共有MFCを使用するに変更しないと。
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGMicrosoft Visual C++でビルドしていて
コマンドを打って無いのですが、
そこを直すにはどうすればいいのでしょう?
0164156
NGNG163は>>159です。
>>160
すみません。コマンドプロンプトがよく分からなくて・・・。
とりあえず161さんの言うように設定を変えてみたのですが、
次のようなエラーが出てしまいました。
MSVCRTD.lib(crtexe.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/CJpegDecoder.exe : fatal error LNK1120: 外部参照 1 が未解決です。
どうしたら良いのかまた分からず・・・。
すみませんが教えてください。
0165デフォルトの名無しさん
NGNGなんか別の設定をさわったろ?
0166156
NGNG161で書かれてあるところを直しただけなのですが、
設定が悪いのでしょうか?
どうすれば良いですか?
0167デフォルトの名無しさん
NGNGじゃあ、とりあえずプロジェクトの設定のリンクで
/SUBSYSTEM:WINDOWSを消せ
0168デフォルトの名無しさん
NGNGちゃう、
/SUBSYSTEM:CONSOLEになってるかも、とりあえずどっちかあったら消せ
0169デフォルトの名無しさん
NGNGdouble型の場合、ios::oct等が対応していないためcout.setfの行を無視していると思ったのですが・・・
これも155さんが言うサイズと関係しているような気がするのですがよくわかりません。
(もしかしたらこの質問自体が意味不明な文になってるかも・・・)
0170156
NGNG/SUBSYSTEM:CONSOLEを消したら
LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません
とエラーが出てしまいました。
まだ何かあるのでしょうか?
0171デフォルトの名無しさん
NGNGdoubleは普通の整数型とは値の表し方(フォーマット)がぜんぜん違うから16進で表示しても無意味だから対応していないんだろうね。
0172デフォルトの名無しさん
NGNGメイン関数がないんだろ。
その本についていたプログラムはそれだけで動くものじゃないんじゃないのか?
0173デフォルトの名無しさん
NGNG負の値でうまくいかないってのはなにがうまくいかないんだ?
16進数なら
-1 → ffffffff
だぞ
0174デフォルトの名無しさん
NGNGなんかプログラム勉強する以前のような気がしてきた・・・
0175156
NGNG確かにmainが無いみたいです。
そういう説明が書いてなかったので気づきませんでした。
VC++の設定を初めていじって不安なのですが、
元に戻しておいた方が良いのでしょうか?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGぜんぜん問題ない。
0178デフォルトの名無しさん
NGNGclass B : public virtual A{}
というような継承でvirtualを書くとどうなるんですか?
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGすいません、virtual継承って何ですか?
0181デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=virtual%E7%B6%99%E6%89%BF&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0182デフォルトの名無しさん
NGNGそれの継承版ですか?
0183デフォルトの名無しさん
NGNG多重継承について勉強しなされ。
0184デフォルトの名無しさん
NGNG仮想クラスなんて存在しません。あるのは抽象基底クラスでしょ。仮想継承は、
多重継承時に基底クラスのサブオブジェクトを一つだけにする。
…っつかプログラミング言語 C++ 読むと、図付きで解説してると思うぞ。
0185デフォルトの名無しさん
NGNG手淫をすると、長さと太さの変数を上げ精子が飛び出させるというところまでは簡単なのですが、
一回射精をするとしばらく射精ができなくなるのが難しいです。
しかも、射精の直後でもがんばればできますし・・・
誰か作っていただけませんか?
0186デフォルトの名無しさん
NGNGStateパターン
0187デフォルトの名無しさん
NGNGX* pcb;
pcb=pca;
pcb->func();
delete pcb;
pcb=NULL;
pcb->func();これが落ちもせずに走るのは、どういうわけでしょう?
これはそういうものなんでしょうか?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGX::func() がメンバ変数を一切触っていないか、もしくは
delete 後のメモリが他の動作で破壊されていない事。
で NULL の定義が
#define NULL pca
もしくは
#define NULL pcb
だったりすると…
あら不思議!
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGX::func() が非仮想メンバ関数で、かつ、直接または間接にそのインスタンスのメンバ変数の参照や
仮想メンバ関数の呼び出しを一切していないならば、そうなる場合もある。
>>189
pcb=NULL とした後では、たとえ delete 後もメモリがそのまま残っていたとしても、
インスタンスを参照しようとした瞬間に落ちると思われ。
0192デフォルトの名無しさん
NGNGthisポインタに一切アクセスしないならば動くような気もする。
0193デフォルトの名無しさん
NGNGの指すデータを見るにはどうすれば良いでしょうか?
0194デフォルトの名無しさん
NGNGデバッガの使い方って事?
0195デフォルトの名無しさん
NGNGわかんねーよ
0196193
NGNGデバッガでシンボル名を指定するとポインタのアドレスのデータが分かるのですが
その次以降のアドレスに入っているデータが見れないで困っています。
>>195
System.out.println的関数って何を見たらいいのでしょう?
初心者なので良く分からなくて・・・。
0197デフォルトの名無しさん
NGNGウオッチウィンドウを使え
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG非 static でも、呼び出す関数が静的に決定されるなら、関数呼び出しでは
落ちんよ。逆に言えば、関数呼び出しで保護違反を食らう可能性があるのは、
func が仮想関数の場合だけ。
もちろん非仮想関数であっても、中でメンバ変数を触ったらアウトだけど。
0200デフォルトの名無しさん
NGNGそこまでムキにならなくても・・・
0201デフォルトの名無しさん
NGNGinlineをつけてクラス定義の外に書くのとでは
どういう違いがあるんでしょうか?
0202デフォルトの名無しさん
NGNG別に違いはない
0203デフォルトの名無しさん
NGNG処理系によるけど、外に書くと定義順によっては inline 展開されない場合が
ある。
inline void Foo::func1() { func2(); }
inline void Foo::func2() {}
これだと func1() をコンパイルする時点で func2() の定義が見えないので、
インライン展開されなかったりさ。
0204デフォルトの名無しさん
NGNGそりゃあよほどアホなコンパイラじゃないのかね
0205デフォルトの名無しさん
NGNGメモリを確保するいい方法がありますでしょうか?
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG他にいい方法ありますか?
0208デフォルトの名無しさん
NGNGコンパイラオプションのヘルプをよく見ると、
メモリ量の上限を指定する方法が書いてあると思うよ。
0209デフォルトの名無しさん
NGNGMicrosofr VC++ ver6使ってるんですけど、
上限を増やす方法知ってたら教えてください。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG後、2000×1000×3バイトなんですけど、
1000×1000で限界みたいなのです・・・。
0212デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/vccore/_core_.2f.zm.htm
0213デフォルトの名無しさん
NGNG設定の変更したことないので、どうすればいいのかよく分からず・・・。
どうしたら良いのでしょう?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGnew でも malloc でもその程度楽勝で確保できるぞ。
だいたい「強制終了」させられるんなら、プログラムのバグだと
思うし。
0216デフォルトの名無しさん
NGNG具体的にどんなエラーが発生しているんだ?
エラーメッセージ晒せ
0217デフォルトの名無しさん
NGNGnew 使って2次元配列を定義しようとしてもできないのですが、
どうしたらいいのでしょうか?
0218デフォルトの名無しさん
NGNGint *data1 = new[1000 * 1000];
int i = 0;
for(i = 0;i <= 1000 * 1000;i++)
data1[i] = 0;
0220デフォルトの名無しさん
NGNG0221205
NGNG>>218のようにはしていないので
二次元配列のnewでの定義の仕方お願いします。
0222デフォルトの名無しさん
NGNG> そりゃあよほどアホなコンパイラじゃないのかね
俺が確認したのは gcc 2.95.x
gcc 3 系列は試してないので知らんけど。
0223デフォルトの名無しさん
NGNGint **data = new int[1000][1000];
0224205
NGNGコンパイル出来ないのですが・・・。
何かおかしいのでしょうか?
0225デフォルトの名無しさん
NGNGからかわれたんだ。
自分の書いたソースをあげてみそ
0226デフォルトの名無しさん
NGNGfriend クラス、関数はメンバじゃないから、アクセス制御とは当然関係ない。
だからこういうこともできる。
#include <iostream>
class Foo;
class Bar {
public:
void print(const Foo&);
};
class Foo {
int m_;
friend void Bar::print(const Foo& f) { std::cout << f.m_ << std::endl; }
public:
Foo(int n = 0) : m_(n) {}
};
int main()
{
Foo foo;
Bar bar;
bar.print(foo);
}
0227デフォルトの名無しさん
NGNGありがとうございます。
教えてもらったところで申し訳ないのですが、
上のコードはg++だと2.95,3.2どちらでも
エラーになります。
0228デフォルトの名無しさん
NGNGint **data = new LPINT[1000];
for(int i = 0;i < 1000;i++)
data[i] = new int[1000];
0229デフォルトの名無しさん
NGNG{
int data[1000][1000];
}
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGint **data = new LPINT[1000];
int *temp = new int[1000 * 1000];
for(int i = 0;i < 1000;i++)
data[i] = temp[i * 1000];
0233デフォルトの名無しさん
NGNGちょっと修正
typedef int* LPINT;
int **data = new LPINT[1000];
int *temp = new int[1000 * 1000];
for(int i = 0;i < 1000;i++)
data[i] = &temp[i * 1000];
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGちょっと受けた
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGあ、gcc の挙動の方が正しいみたいだね。
VC7しか手元に無いんで深く考えずに、書いてしまった。
まあ、friend 宣言を定義化したのはただの行数稼ぎで
本筋ではないので……スンマソン、欝氏。
0239デフォルトの名無しさん
NGNGunsigned int aaa; ← 0xFFDDEECCの4byte Data
下記のように1byte Dataにしたいのですが
どのようにやればうまくいきますか?
unsigned char a1; ← 0xFF
unsigned char a2; ← 0xDD
unsigned char a3; ← 0xEE
unsigned char a4; ← 0xCC
また逆に詰め込みたい場合はどうするのが良いのでしょう。
0240デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGC++じゃなくてCなのでそっちで探せ
0243デフォルトの名無しさん
NGNGa = (unsigned char *) &aaa;
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGあながちそうでもない
0246デフォルトの名無しさん
NGNG同意だが #ifdef BIG_ENDIAN とかで括っとけよ。
0247デフォルトの名無しさん
NGNGvoid int2charArray(int src, char* dst)
{
dst[0] = src & 0xFF;
dst[1] = (src >> 8) & 0xFF;
dst[2] = (src >> 16) & 0xFF;
dst[3] = (src >> 24) & 0xFF;
}
こんなんでどーだ?
0248デフォルトの名無しさん
NGNG別にunsigned long使えばいいと思うが。
あと、unsigned charの方が良いな。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGむりやりC++にしてみた(藁
配列じゃなく、std::vectorなのは勘弁しれ
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
union Foo {
T val;
unsigned char byte[sizeof(T)];
};
template<typename T>
std::vector<unsigned char> toUchar(const T& val)
{
std::vector<unsigned char> result(sizeof(T));
Foo<T> foo;
foo.val = val;
std::copy(foo.byte, foo.byte+sizeof(T), result.begin());
return result;
}
template<typename T>
T toVal(const std::vector<unsigned char>& vec)
{
Foo<T> foo;
std::copy(vec.begin(), vec.end(), foo.byte);
return foo.val;
}
0251デフォルトの名無しさん
NGNGunsigned char a1 = (aaa >> 24) & 0xff;
unsigned char a2 = (aaa >> 16) & 0xff;
unsigned char a3 = (aaa >> 8) & 0xff;
unsigned char a4 = (aaa >> 0) & 0xff;
unsigned int bbb = (a1 << 24) | (a2 << 16) | (a3 << 8) | (a4 << 0);
0252デフォルトの名無しさん
NGNGと思いつついつも書いてしまう小心者の俺...
■ このスレッドは過去ログ倉庫に格納されています