2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

VIPPERでもわかるプログラミング

1 :デフォルトの名無しさん:2005/11/17(木) 01:30:42
点プレは>>2-5あたり

952 :945:2005/11/30(水) 22:25:06
>>951
うはww書きまくりんぐwwww
まずいんですかね

953 :デフォルトの名無しさん:2005/11/30(水) 23:13:53
べつにまずくないけど気をつけないと多重定義云々面倒くさいことに
何のエラーでてるかわからんと何とも言えないよね

954 :デフォルトの名無しさん:2005/11/30(水) 23:47:36
>>945
とりあえずソース晒すよろし

955 :デフォルトの名無しさん:2005/12/01(木) 12:07:52
ラウンジからきますた

956 :デフォルトの名無しさん:2005/12/01(木) 12:32:55
>>955
お引き取り下さい

957 :デフォルトの名無しさん:2005/12/01(木) 16:36:13
>>953 >>954
ttp://www.vipper.org/vip150503.zip
ttp://www.vipper.org/vip150504.zip

ヘッダに実装ありバージョンと実装無しバージョンのテストです。
ヘッダに実装ありの方はエラー出ます。

ちゃんとソースの方に実装を分けたらエラーでなくなりました。
これで成功?

昨日エラーが出たやつも、これから実装をソースにわけてみます。
どもありがとー!


でもファイルがいっぱいあると管理が大変になるよ orz

958 :デフォルトの名無しさん:2005/12/01(木) 16:45:05
>>957
ヘッダに実装書いてるやつ
ソース側じゃなくヘッダ側にiostreamインクルードしたらおkなんじゃね?

959 :デフォルトの名無しさん:2005/12/01(木) 16:49:11
>>958

#ifndef CCCC
#define CCCC

#include <iostream>
using namespace std;

#include "a.h"
#include "b.h"

class A;
class B;

class C
{
 public:
 int n;
 C () { n = 3; }
 void func1 () { cout << n << endl; }
 void func2 (A a, B b) {}
};

#endif


こうですかね?
これではダメでした。

960 :デフォルトの名無しさん:2005/12/01(木) 16:56:15
ヘッダ実装ありの01.cppでb.func2とc.func2を引数なしで呼んでるのはなんで?

961 :957:2005/12/01(木) 17:00:32
#include <iostream>
using namespace std;
#include "a.h"
#include "b.h"
#include "c.h"
int main ()
{
 A a;
 B b;
 C c;
 a.func2(b, c);
 b.func2(a, b);
 c.func2(b, c);
 return 0;
}

>>960
すいませんこうでした。 ><

962 :デフォルトの名無しさん:2005/12/01(木) 17:05:01
b.func2は
void func2 (A a, C c) {}
c.func2は
void func2 (A a, B b) {}

って宣言されてるから01.cppでは

 b.func2(a, c);
 c.func2(a, b);

って呼ばないとエラー。

963 :957:2005/12/01(木) 17:12:54
http://www.vipper.org/vip150522.zip.html

うあ、すみません、修正版です ><

964 :デフォルトの名無しさん:2005/12/01(木) 17:17:13
>>963
それだとエラーでなくないか?


965 :957:2005/12/01(木) 17:22:41
マジですか!?
VC++6.0 Standardだと以下のエラーが。

コンパイル中...
01.cpp
f:\my_program\cプラプラ実験\ファイル分割_01\c.h(22) : error C2027: 認識できない型 'B' が使われています。
f:\my_program\cプラプラ実験\ファイル分割_01\c.h(14) : 'B' の宣言を確認してください。
F:\MY_PROGRAM\Cプラプラ実験\ファイル分割_01\01.cpp(23) : error C2079: 'b' が 未定義の class 'B' で使用されています。
F:\MY_PROGRAM\Cプラプラ実験\ファイル分割_01\01.cpp(26) : error C2664: 'func2' : 1 番目の引数を 'int' から 'class B' に変換できません。 (新しい機能 ; ヘルプを参照)
ソースまたはターゲットが不完全な型を含んでいます。
F:\MY_PROGRAM\Cプラプラ実験\ファイル分割_01\01.cpp(27) : error C2228: '.func2' : 左側がクラス、構造体、共用体ではありません。
F:\MY_PROGRAM\Cプラプラ実験\ファイル分割_01\01.cpp(28) : error C2664: 'func2' : 2 番目の引数を 'int' から 'class B' に変換できません。 (新しい機能 ; ヘルプを参照)
ソースまたはターゲットが不完全な型を含んでいます。
cl.exe の実行エラー

ファイル分割_01.exe - エラー 5、警告 0

//-----------------------------------------------

で、mainを return 0 以外全部コメントアウトすると以下のエラーが。


コンパイル中...
01.cpp
f:\my_program\cプラプラ実験\ファイル分割_01\c.h(22) : error C2027: 認識できない型 'B' が使われています。
f:\my_program\cプラプラ実験\ファイル分割_01\c.h(14) : 'B' の宣言を確認してください。
cl.exe の実行エラー

ファイル分割_01.exe - エラー 1、警告 0

966 :デフォルトの名無しさん:2005/12/01(木) 17:35:20
>>965
BCB32だと普通に通る。
エラー見るとBの定義がされてないっぽいんだが
b.hだけ別のフォルダにあったりしない?

967 :デフォルトの名無しさん:2005/12/01(木) 17:35:41
>>965
#includeを順番におっかけていってみよう。"b.h"がincludeされる前に"c.h"がincludeされちゃうね。

968 :957:2005/12/01(木) 17:37:18
おちんちんしゅっしゅ!

969 :967:2005/12/01(木) 17:38:48
>>967
訂正。"b.h"でclass Bが宣言される前に"c.h"がincludeされてclass Cが宣言されちゃう。

970 :957:2005/12/01(木) 17:46:43
>>966
うらやますぃ。

>>969
どれからインクルードされてもいいように、
それぞれのヘッダの上の方で #include "○○.h"ってのを呼んでるつもりなのですが
そういう問題じゃないんですかね orz
てゆか、なんで上から順番どおり読んでくれんのだぁ (T_T)

>>968

971 :967:2005/12/01(木) 17:49:14
>>970
上から順番に読んでるよ。
"01.cpp"の#include "a.h"から順番に考えていってごらん。

972 :957:2005/12/01(木) 17:55:46
うあ、そんなん考えたことなかった ('A`)
えーと、、まず

01.cppでa.hが呼ばれて、
a.hでb.hが呼ばれて、
b.hでa.hがスルーされてc.hが呼ばれて、
c.hでa.hとb.hがスルーされて・・

ん?ここで止まる!?
もうわけわかめ

973 :デフォルトの名無しさん:2005/12/01(木) 18:05:11
>>972
それでゴール。#includeは、ファイルの中身をまるごとソースにコピペするだけ。
>>972の順番で、"01.cpp"の#includeと対応するヘッダファイルを差し替えてみてごらん。

974 :957:2005/12/01(木) 18:37:27
>>973
#includeってコピペだったのね ^^
↓みたいな流れで止まってるのかなぁ。

// 01.cpp
#include iostream

// a.h

// b.h

// c.h
class A: // ←宣言だけ?関数プロトタイプみたいな??
class B:
class C {
public:
 int n;
 C () { n = 3; }
 void func1 () { cout << n << endl; }
 void func2 (A a, B b) {} // ←ここで止まる?

↑のfunc2()で宣言だけされてて、
中身がなんなのかわからない型AとBを使おうとしてるから止まる??

しかもAとBのうち、なぜか右に書いてあるBから判定してるみたい。 func2()を
void func2 (B b, A a) {}
とすると、エラーは「認識できない型 'A' が使われています。 」ってなる。

これでいいでしょか ('A`)

975 :デフォルトの名無しさん:2005/12/01(木) 18:42:38
('A')

976 :デフォルトの名無しさん:2005/12/01(木) 18:46:46
class A;
class B;
じゃなかったっけ?

977 :デフォルトの名無しさん:2005/12/01(木) 18:56:24
次スレてんぷら作ったほうがいんじゃね?

978 :デフォルトの名無しさん:2005/12/01(木) 18:57:26
>>976
でした orz


ちなみに昨日エラーが出たプログラムは
ヘッダは11、ソースが3。ファイル合計14。

ヘッダの実装をソースに移すと全部で20超えるか。
あと3時間で終わるかな・・。

979 :デフォルトの名無しさん:2005/12/01(木) 19:06:43
>>978
ちなみに今回の場合、ヘッダに実装を書いたがゆえの多重定義云々じゃなくて、
ファイルの分割方法に問題があったと思われ。

980 :デフォルトの名無しさん:2005/12/01(木) 19:10:30
C++は意味不なエラーが多いから困る。
今CからC++のクラスを使う関数の呼ぼうとしてはまってるんだけど undefined reference to `operator new(unsigned int)'って言われてビルドできない。
g++でビルドしてるのに…

981 :デフォルトの名無しさん:2005/12/01(木) 19:21:59
C++のせいにしちゃダメだお(;^ω^)

982 :デフォルトの名無しさん:2005/12/01(木) 19:23:05
ttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/CodingStyle.html

983 :デフォルトの名無しさん:2005/12/01(木) 19:26:06
VIPPERでもわかるプログラミング

テンプレは
>>2
>>4
>>5
>>6
でおk?

984 :デフォルトの名無しさん:2005/12/01(木) 20:55:31
Cってクラスっていう概念がないんだっけ?

985 :デフォルトの名無しさん:2005/12/01(木) 20:56:55
そりゃオブジェクト指向って考え方が出る前に作られた言語だもん

986 :デフォルトの名無しさん:2005/12/01(木) 21:01:22
やっと動いたぁ (´д`)

>>979
うはwごめww


ってことで、スレ立ててきまっす。
【VIPPERでもわかるプログラミング 2】
でいいですよね。

987 :デフォルトの名無しさん:2005/12/01(木) 21:07:48
>>3

/*VIPPERでもわかるプログラミング ver.3*/
がいいとおもう

988 :みずき ◆WnmizUKIg6 :2005/12/01(木) 21:08:44 ?##
スレタイ:>>987
本  文:>>710


989 :986:2005/12/01(木) 21:12:07
VIPPERでもわかるプログラミング 2
http://pc8.2ch.net/test/read.cgi/tech/1133438540/


ごめ・・・やっちゃった orz

990 :デフォルトの名無しさん:2005/12/01(木) 21:15:00
std::cout << "VIPでやれ." << std::endl;

991 :デフォルトの名無しさん:2005/12/01(木) 21:15:09
あーあw

992 :デフォルトの名無しさん:2005/12/01(木) 21:15:20
1000は俺がいただくぜwwwwwwwwwwwww

993 :デフォルトの名無しさん:2005/12/01(木) 21:15:55
⊂二二二( ^ω^)二⊃ ブーン

994 :デフォルトの名無しさん:2005/12/01(木) 21:16:29
ksk

995 :デフォルトの名無しさん:2005/12/01(木) 21:17:30
std::cout << "VIPだと落ちるんだよ." << std::endl;

996 :デフォルトの名無しさん:2005/12/01(木) 21:17:41
('A`)

997 :みずき ◆WnmizUKIg6 :2005/12/01(木) 21:17:51 ?##
gets(>>1000);

998 :デフォルトの名無しさん:2005/12/01(木) 21:18:28
for(;;)puts("1000は俺様のものです!");

999 :デフォルトの名無しさん:2005/12/01(木) 21:19:02
(;^ω^)

1000 :デフォルトの名無しさん:2005/12/01(木) 21:19:07
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

203 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)