visual c++の仕様について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kino

visual c++の仕様について

#1

投稿記事 by kino » 12年前

visual c++の環境で質問があります。

今継承の勉強をしていて、実際に継承と汎化を利用した実行ファイルを作ろうとしてます。
その際、コードをvisualC++のエディタに打ち込まないで、windowsのメモ帳に打ち込んでからvisual C++に追加するようにしました。

すると、main.cppファイルで一切の応答がなく行き詰ってしまいました。
外部のエディタから直接追加した物はvisualC++との互換性がないのでしょうか?

下のコードは今作っているものです。

コード:

 

//Jugyoin.h
class Jugyoin{

	piblic:
	  int number:     //社員番号
	  char shimei[80];//氏名
	  long kyuyo;     //給与

};

コード:

 
//yakuin.h

#include"Jugyoin.h"

class yakuin:public Jugyoin{

	public:
	int kabu;
};
 

コード:

//kacho
#include"Jugyoin.h"

class kacho:public Jugyoin{

	public:
	  int shuchohi;//出張費
};
 

コード:

//main.cpp
#include"stdio.h"
#include"yakuin.h"
#include"kacho.h"
#include"iostream"
using namespace std;

int main()
{

yakuin y;
y.number= 1234;
strcpy("役員太郎",y.shimei);
y.kyuyo = 500000;
y.kabu = 1000;

cout << "社員番号:"<< y.number << "\n";
cout <<"氏名:" << y.shimei << "\n";
cout <<"給与:" << y.kyuyo << "\n";
cout <<"株保有数:"<<y.kabu << "\n";


kacho k;
k.number = 1234;
strcpy("役員太郎",y.shimei);
k.kyuyo = 500000;
k.shucchouhi = 10000;

cout <<"社員名:"<<k.number <<"\n";
cout <<"氏名:" <<k.shimei <<"\n";
cout <<"給与:" <<k.kyuyo << "\n";
cout <<"出張費:" <<k.shucchouhi <<"\n";

};
 

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: visual c++の仕様について

#2

投稿記事 by softya(ソフト屋) » 12年前

私は常に秀丸を使っていますので外部エディタが不可なんて事はありません。
そもそも問題があればコンパイルエラーするはずです。

>すると、main.cppファイルで一切の応答がなく行き詰ってしまいました。
これがよく分かりません。
どういう状況なのでしょうか?あとデバッガで確認できませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: visual c++の仕様について

#3

投稿記事 by みけCAT » 12年前

kino さんが書きました:すると、main.cppファイルで一切の応答がなく行き詰ってしまいました。
Visual C++がフリーズして応答なしになったということですか?
オフトピック
一見strcpyで文字列リテラルに対しデータを書き込もうとしているように見えますが、
よく見るとstring.hやcstringをインクルードせず、独自のヘッダをインクルードしているので、
きっときちんと第二引数に第一引数のデータをコピーするstrcpy関数がそれらのヘッダで定義されているのでしょう。
ただ、紛らわしいのでいい命名ではないですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: visual c++の仕様について

#4

投稿記事 by softya(ソフト屋) » 12年前

よく見たら、とりあえずstrcpyがあれですね。
C++ならstd::stringを使ったほうが素直なコードになると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kino

Re: visual c++の仕様について

#5

投稿記事 by kino » 12年前

c++ファイルでの応答がないといいますか、main.cppファイルで実際に継承、汎化したkacho.hファイルとyakuin.hファイルをインスタンス化し、メンバ変数を使おうとしたのですが、mainでメンバ変数の定義をしても認識されていないみたいなのです。
デバッカを再確認したところ、初めにJugyoinクラスの再定義を要求されているみたいなのですが、どうゆうことかよくわかりません。
もしかしたら、Jugyoin.hファイルの多重宣言に問題があるのでょうか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: visual c++の仕様について

#6

投稿記事 by みけCAT » 12年前

Jugyoin.hにインクルードガードを追加するべきだと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: visual c++の仕様について

#7

投稿記事 by softya(ソフト屋) » 12年前

それはコンパイルエラーですよね。
#pragma once
で多重インクルードガードしてみてください。
コンパイルが通っていないのでデバッガは当然動いていないです。

エラーメッセッジをそのまま載せてもらうのが速道です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kino

Re: visual c++の仕様について

#8

投稿記事 by kino » 12年前

Jugyoiクラスにインクルードをつけましたが、まだmain.cppファイルに変数が反映されていないようです。
また、コンパイルエラーメッセージ欄には「'kacho' の宣言を確認してください。」のみ消えないでいます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: visual c++の仕様について

#9

投稿記事 by softya(ソフト屋) » 12年前

kino さんが書きました:Jugyoiクラスにインクルードをつけましたが、まだmain.cppファイルに変数が反映されていないようです。
また、コンパイルエラーメッセージ欄には「'kacho' の宣言を確認してください。」のみ消えないでいます。
全ヘッダファイルにインクルードガードをしてください。
用語の用法が怪しいので、よく確認してから使ってくださいね。

> Jugyoiクラスにインクルードをつけましたが、まだmain.cppファイルに変数が反映されていないようです

説明になっていないのと、「変数が反映されていないようです」はどうやって確認したのですか情報の出し惜しみは回り道になるだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: visual c++の仕様について

#10

投稿記事 by みけCAT » 12年前

main.cppの27行目のスペルミスですね。

【追記】32行目もです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

kino

Re: visual c++の仕様について

#11

投稿記事 by kino » 12年前

投稿した後、いろいろ見返してみておかしい部分(ほとんど自分のスペルミスでした)を直してみたところ何とか実行ファイルができました。
数々の指摘コメントありがとうございました。
とりあえず完成はしたのですが、どうしてもmainのメンバ変数にマウスを当てても何も表示されないのが気になります。
visualC++で作成すればきちんと、これがどの部分の関数か変数かがわかるようにマウスを当てれば表示されるみたいなのですが……。
やはりvisualC++で作成したほうが無難だと思います。

コード:

//Jugyoin.h

#pragma once //インクルードガード
class Jugyoin{
	public:
	  int number;     //社員番号
	  char shimei[80];//氏名
	  long kyuyo;     //給与
}; 

コード:

#include"Jugyoin.h"

class yakuin:public Jugyoin{

	public:
	int kabu;
};
 

コード:

 
#include"Jugyoin.h"

class kacho:public Jugyoin{

	public:
	int shuchohi;//出張費
};
 

コード:

 
#include"stdio.h"
#include"yakuin.h"
#include"kacho.h"
#include"string.h"
#include"iostream"
using namespace std;

int main()
{

yakuin y;
y.number= 1234;
strcpy(y.shimei,"役員太郎");
y.kyuyo = 500000;
y.kabu = 1000;

cout << "社員番号:"<< y.number << "\n";
cout <<"氏名:" << y.shimei << "\n";
cout <<"給与:" << y.kyuyo << "\n";
cout <<"株保有数:"<<y.kabu << "\n";


kacho k;
k.number = 1234;
strcpy(k.shimei,"サラリー・マン");
k.kyuyo = 500000;
k.shuchohi = 10000;

cout <<"社員名:"<<k.number <<"\n";
cout <<"氏名:" <<k.shimei <<"\n";
cout <<"給与:" <<k.kyuyo << "\n";
cout <<"出張費:" <<k.shuchohi <<"\n";

};

閉鎖

“C言語何でも質問掲示板” へ戻る