こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2次元配列にポインタを格納

http://www.okweb.ne.jp/kotaeru.php3?q=505241の訂正版の質問です。
VC++6.0を使っております。
下のようなプログラムを作ってみました。
#include <stdio.h>
#include <vector>
using namespace std;
class c{
public:
c();
virtual ~c();
int get(){return j;};
void set(int i){j=i;};
private:
c(const c &right);
const c &operator=(const c &right);
int j;
};
void main(){
vector <vector<c*> > a;
c *b;
for(int n=0;n<10;n++){
for(int i=0;i<10;i++){
b=new c;
a[n].push_back(b);
}
}
for(int j=0;j<10;j++){
for(int i=0;i<9;i++){
a[i][j] -> set(i+j);
}
}
for(j=0;j<10;j++){
for(int i=0;i<9;i++){
printf("%d ",a[i][j] -> get());
}
printf("%d\n",a[9][j] -> get());
}
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
delete a[i][j];
}
}

}
すると、コンパイルには成功するのですが、実行は出来ません。
その理由は、「外部参照1が未解決」だそうです。
アドバイスをお願いいたします。

投稿日時 - 2003-03-25 14:34:47

QNo.506657

困ってます

質問者が選んだベストアンサー

for(int n=0;n<10;n++){
for(int i=0;i<10;i++){
b=new c;
a[n].push_back(b);
}
}

初期状態において、a[n]が存在しません。

投稿日時 - 2003-03-26 00:29:04

お礼

できました!お手数おかけいたしました!

投稿日時 - 2003-03-26 07:09:27

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

cのメソッド(コンストラクタ/デストラクタ等)が定義されていません。

投稿日時 - 2003-03-25 14:45:25

お礼

ありがとうございます。確かに定義してません。
そこで、
class c{
public:
c();
virtual ~c();

class c{
public:
c(){}
virtual ~c(){}
と変えてみました。
すると、コンパイルは通ったのですが、実行すると、
「メモリがreadになれない。」というエラーになってしまいます。
他に変更するところはどこでしょうか。

投稿日時 - 2003-03-26 00:11:07

あなたにオススメの質問