C++相談室 part135
■ このスレッドは過去ログ倉庫に格納されています
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part134
http://mevius.5ch.net/test/read.cgi/tech/1516406742/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured この64ビットが主流になりつつある時代にSTL使うとファイルサイズガァとかよく耳にしますが、時代についてこれていない老いぼれの戯言なのでとっとと見限って先に進みましょう
----- テンプレ ここまで ----- STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ---- >>1乙だが
さすがに>>2がテンプレとかないわ;; えー、どっちもワシ(>>1)が貼り付けたわけじゃないのにー このRTL使うとファイルサイズが減るとかおもいっきり頭悪い回答した奴とSTLをごっちゃにするテンプレいい加減やめれ
STL使っている奴=無能に見えるではないか コレ老いぼれが仕掛けているマッチポンプにも見えなくはないしな
毎回毎回クソみたいなテンプレ貼りまくって見苦しいぞまったく 原発も飛行機も、自動車も?固定メモリ空間で、確保解放なんて一瞬の手間すら惜しんで全部上書きでしょ(知らんけど) インターネットにつながってる原発とか、USB接続ができる原発なんてあり得ないから。フロッピーもダメ。ROMカセットならギリギリOK。 EMP対策とか防火対策とか銃器対策もしないといけない。 確実な「保証」が必要だからなぁ。
リアルタイム性の要求もそうだが、
ありそうにないほどの最悪条件でもメモリ確保に失敗してはいけないので、
確実に見積もれるようにするにはヒープメモリの使用を避けるのは妥当なことも有りうる。
メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
起こりうるすべてのパターンで new が失敗しないことを検証するなんて
面倒くさい (というより事実上不可能な) ことは出来んだろ。
本当にシビアな制御が必要な原発レベルなら定理証明系とかも使ってるんじゃないかな。 https://i.imgur.com/oNGIigg.gif
全部アナログに任せてるから操作間違ってこんなんになっているんやろ コントロールルームの写真見るとありえんくらい計器とボタンついてるから
ソフトウェア自体ほとんど使われてないだろうな マウスで原子炉の制御棒を操作するのか? 冗談すぎる。 作業員に1人テロリストが混ざっていたとしても、原子炉を暴走させることが出来ないようなシステムにしないといけない。 二人が同時にキースイッチをカチッとオンにすると発射! 原発関係の諜報活動はかなりシビアで、どこかの国では、国家犯罪的なコンピューターウイルスにやられて原発が稼働できなくなったらしい。 16bit時代は、友人にウイルスを集める奴が、居たよな。今では所持だけで犯罪になっちゃったけど。 原発は既に発電原価が他の発電方法よりも割高なんで、やめても良い
核廃棄物の処分方法すら未だに手が付けられないんだし
他の国は土地があって置き場所に困らないが、日本はそうでは無いよ >>23
その頃はしょせん個人がいたずら目的で作ってた程度だからな
今の違法なビジネスで作られてるものとは性質が違う あの頃は、ウイルス対策の概念が浸透してなくて、雑誌の付録にもウイルスが付いていたらしい。MS-DOSとWin9x時代のデジタル発掘には危険が伴う。 ウイルス蔓延に対する答えが、プログラムファイルの保護、ウイルス対策、UAC、SmartScreen、デジタル署名なんだよな。 C++20では、生ポインタが非推奨になるんだよな? >>28
生ポインタを取り出すstd::to_addressが追加されるんだが じゃ、勘違い。
株価を見るに、インテルも安泰じゃないようだ。 リスクオフで世界的に株安なだけでインテルの業績が悪化しているわけではない >>31
しったか乙
アップルがIntel捨てるからだよ ん?ノートがARMにでもなるの?ちょっとむりない? 独自CPUだよ
林檎だしアーキから独自じゃないの? >>34
あいほんはARMベースじゃなかったっけ。自社カスタムしてるけど。 仮にインテルから自社製造に切り替えが本当だったとしても、
ARMかAMDみたいな互換のどちらかじゃないかな
仮にARMだったらRISCに戻ることになるのか
そんな変更を強行出来るのはアップルくらいなもんだな これまでのニュース記事
・独自CPUを開発中
・iphoneアプリをmacbookで動かせるようにする
・1000ドル未満のmacbookを追加する
つまりはこんなとこでしょ。
・macbookはARMアーキのカスタムCPU
・proはIntel CPUとカスタムCPUのデュアル構成
スレチなのでもうやめる >>32
最近の下げ調子からちょっと戻したところをイースター休暇を狙って仕掛けがあったんだが
個別のちょっとしたニュースの影響なんて掻き消える事態なんだよ
ITだけでもほぼ全部下げてる
https://stocks.finance.yahoo.co.jp/us/ranking/?kd=4&tm=d
アップル 前日比-1.10(-0.66%)
マイクロソフト 前日比-2.75(-3.01%)
アマゾン・ドット・コム 前日比-75.35(-5.21%)
IBM -3.36(-2.19%)
グーグル -25.32(-2.45%)
インテル 前日比-3.16(-6.07%)
エヌビディア -10.54(-4.55%)
AMD 前日比-0.52(-5.17%)
クアルコム -1.60(-2.89%)
オラクル -0.74(-1.62%)
フェイスブック -4.40(-2.75%)
ツイッター 前日比-0.97(-3.34%)
ヒューレット・パッカード -0.78(-3.56%)
シスコ・システムズ -1.88(-4.38%) >>15
>メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
これに関しては起動時にまとまったメモリを終了処理用にmalloc()しておくという古典的なテクニックがある
(1 MBのメモリを起動時にmalloc()しておき、ヒープメモリが無くなったらそいつを解放すれば
終了処理に1 MB使える
メイヤーズの本にも載ってる Java最高!プログラムの未来はJavaにある!面倒なメモリ管理もなくなるし移植でコード書き直す必要もなくなるぞ!
それに引き換えC++(笑)ときたら、数年後には特殊用途以外では消えてるね。まあその特殊用途もCとアセンブラで充分だけどな(プ
とか言われてた時代もあったんです
本当だよ class Manager {
public:
template <class T>
static void add(std::string key) {
auto inst = std::make_shared<SuperClass>(new T());
Manager::m_data[key] = inst;
}
}
使用例
Manager::add<SubClass>("key1");
こんなことがしたいんだけどnew T()のところでエラーが出る
C2248 'SubClass::SubClass': private メンバー (クラス 'SubClass' で宣言されている) にアクセスできません。
解決策を教えてください
SubClassはSuperClassから派生させてコンストラクタSubClass(){}を追加しただけです すみません派生クラスのコンストラクタにpublic:つけてませんでした・・・ make_shared使ってるのにnewするなんて こうしなさい
auto inst = std::make_shared<T>();
Manager::m_data[key] = std::move(inst); まずはManagerとかControllerとかいった名前をたやすく使うのをやめるべき。
もちろんそういった名前が適切な場合も多々あるが、初心者が使う場合、たいていオブジェクト指向設計に失敗している。 >>51
なんで?シェアードポインタに限っては内部カウント増えてコピーされるだけだよ。
うにーくはmoveしたいけど、mapには入らないみたい。 違うよ
ちゃんと実際の型でmake_sharedしてからshared_ptr<SuperClass>に入れろって言ってるの せっかく make_shared 使うのに明示的に生ポインタを new する人って…
というようなことだろ auto変数はスコープ外れたらどうせ破棄されるしmove要らない いままでC♯使ってたけど、最近つーかおととしくらいからC++使い始めたんだよ。
そしていろいろ見ているうちにファイルの作成→3Dシーンというのがあったので、作成したら、
何もオブジェクトの入ってないシーンだけの画面が出てきたわけよ。
このシーンにオブジェクトを入れるにはどうすればいいの?
またウインドウズのGUIの実行ファイルからこのシーンを出すにはどうすればいいの?
つーかそもそもGUIの実行ファイルからこのシーンを出せるの?
このようにまだ右も左もわかってない状態なんで、よろしくご教授お願いしますよw >最近つーかおととしくらいからC++使い始めたんだよ。
ごめん、おとといくらいからの間違いだったよw
よろしくご教授たのむよ!! >>59
自分の環境くらい理解しよう。UnityなのかUnrealなのか。 何を言っているのかわからないし
特定のプラットフォームの話ならそっちで聞くべき YAMLをC++で読む簡単な方法はなんですか?
LibYAMLなんですかね >>62
いや、いま使ってたのはUnityでC♯だったが、
それとは別にVisualC++とFBXSDKでってのをやってみようと思っておとといから始めたわけだよ。
でFBXファイルを読み込んでノードの取得あたりまでは進んだけど、
よく見るとVisualC++のファイル新規作成に3Dシーン(FBX)ってのがあるわけ。
もしやこれ使うとFBXSDKはいらないのかな?とも思ったりしたんだけど、
何しろまだ右も左もわからないし、その3Dシーンにオブジェクトを置くやりからもわからないし、
そのシーンを一応とってつけてつくってみたウインドウズ実行ファイルから呼び出すためのコードの書き方もわからないしで、
こうやってみなさまにご教授を求めた次第ですよ!! 私の認識が正しければ、SDKはSoftware Development Kitだから、実際の実行時に使うライブラリーのことだろうよ。 実行時に動かすなら、SDKにリファレンス(またはドキュメント)があるはずだ。 ドキュメントがないなら、そんなマイナーなフレームワークを使うな、で終わり。 >>68
まだ正式なリファレンスはいろいろ暇がなくて読んでない。
日本語で簡単に解説してあるウェブサイトは見たけど、
取得したFBXファイルのいろんな情報を文字列で表示するプログラムが載ってるだけで、
実際にその3Dオブジェクトを画面に表示する方法が載ってない。日本語のサイトで解説してあるのは、どうもここまでみたいなので、
やはり英語の正式なリファレンスを見ないとダメかな?www ゲーム製作板に、くわしく知ってる人が居るかも知れない。 業界へ出るなら、英語アレルギーは克服すべし。自動翻訳が使えれば、詠めるかもしれない。蘭学から学べることは多い。 >>70
>ゲーム製作板か、CG板の方がいいかもしれない。
いやゲームはもう作りたくないし、CGも特に興味ない。
実はMakeHumanみたいな3Dキャラ作成ツールがつくりたくてね。
まだ始めたばかりで、そこまでの距離は100億光年ばかりあるけど・・・
これってやっぱりちゃんとしたプログラム技術板向きの話題だよね? ゼロから3D作りたいなら、DirectX, OpenGL, Valkanあたりを勉強することになる。
しかし、ゲームエンジンがなければ、動く3Dは手間がかかる。 >>76
DirectX便利ですよね
魚眼を再現しようとして挫折しましたが... iPhoneXでリアルタイムでVtuber作れる時代に素人が3Dモデラー作るのは、技術のムダだろう。 数学のベクトル、射影、非ユークリッド幾何学が理解できるくらいの数学力がないと魚眼レンズはムリだろう。ムリムリ。 物理学的に考えると、魚眼は屈折率の差から発生する現象だから、モデラーの物体に屈折率を設定するだけでいい。 カメラの特性で、レンズの広角が設定できればそれに越したことはないが。 >>80
エピポール幾何はいるでしょうねぇ
AR/MR/VRするなら >>83
度重なるありがとうございます。
勉強します。とりあえず処理重そうです(・・;) ゲーム作ろうと思っても大体はゲームエンジン作り始めて途中で飽きてやめる CGもオブジェクト指向になっているから、撮影スタジオで実際に物体やカメラの位置を決めるのと同じように、シーンを構築すれば、それが映像になる。 ニュースセンターで使われるような、再現CGを自由に作れるようになったら、引っ張りダコだよ。 そうなったら、映像クリエイターになって仕事を請け負って独立できるぞ。プログラマーよりも働き甲斐があるかもしれん。 やたら伸びてると思ったら1人あたりのレス数多すぎだろ(しかも知らんことに口出し過ぎ
fbxsdkは昔ちょっとしか触ってないが、多分そのVSの3Dシーン作成ってのは3Dのモデルやシーンを.fbxに書き出すプロジェクトじゃね?
そういうのは多分Maya使った方が早いしfbxsdkはどっちにしても要る
あとDirect3D使うならそっちのスレ行ってくれ C++で用意されているキャストと
cのi=(int)j みたいなキャストの違いがよくわからない static_cast … 無理のない互換性のある変換。
reinterpret_cast … int から void* 等への強制変換 c の ()キャストと同じ。
const_cast … const 付きから const を無くしたりまたはその逆の変換。
dynamic_cast … 実行時型情報を使って実行時に型情報で互換性を見比べながらの変換。実行時型情報とのリンクが必須。 >>92
C スタイルのキャストは dynamic_cast 以外の C++ スタイルキャストを兼ね備えている。
安全なキャストも危険なキャストも見た目にわかんないから、
うっかり危険なキャストをしないようにカテゴリ分けしたやつを使った方がいいなって話。
reinterpret_cast や const_cast がどうしても必要な状況になったら、
それはそのプログラムが悪いデザインだというサインだ。
(デバイスドライバとか OS とかの低水準プログラムだと仕方なく使う機会は多いかもしれないけど) 『プログラミング言語C++』第4版のどこだったかに、
「危険なキャストを行っているソース箇所が目立つように
reinterpret_cast<型> のような長い綴りで見た目もスマートでない
キーワードを選んで導入した」みたいなことが書いてあったな。 すいませんchar str[1000]に格納されてるこの文字列を、str2[0][]=64 str2[1][]=9 という感じで上手くデータだけ取り出す方法は無いでしょうか
http://i.imgur.com/MMYajmf.jpg ありがとうございます
基本的には見た目の話なんですね >>96
cならsscanfかね
c++ならregexを使うか
そもそもc/c++でやりたい範囲ではないが >>96
テキストなのなら、一行ずつ読んで、=で半分にしましょう。
んで、""の中の空白以外を全部取り去って、std::mapにでも突っ込みましょう。 >>99>>100
めっちゃ難しそうな回答きた・・
ちょっと調べて頑張ってみますありがとうございます ■ このスレッドは過去ログ倉庫に格納されています