940 :
デフォルトの名無しさん:
int main()
{
A<int> a;
}
↑↑Test.cpp↑↑
↓↓A.h↓↓
#pragma once
template<class T>
class A
{
public:
A(void);
~A(void);
};
↑↑A.h↑↑
↓↓A.cpp↓↓
#include "A.h"
template <class T> A<T>::A(void)
{
}
template <class T> A<T>::~A(void)
{
}
↑↑A.cpp↑↑
Test error LNK2019: 未解決の外部シンボル "public: __thiscall A<int>::~A<int>(void)" (??1?$A@H@@QAE@XZ) が関数 _main で参照されました。
Test error LNK2019: 未解決の外部シンボル "public: __thiscall A<int>::A<int>(void)" (??0?$A@H@@QAE@XZ) が関数 _main で参照されました。
Test fatal error LNK1120: 外部参照 2 が未解決です。
どうすればいいですか?
テンプレート関数の定義が使用するコンパイル単位に含まれるようにすればいい。
テンプレートつきクラスのメソッドを、クラス定義の外に書くときは、
exportだっけなぁ。なんかキーワードが必要だったとおもうなぁ。
そういやSTL無関係に自前でtemplateなんて使ったことないな
テンプレートはヘッダに全部書くがよろし。
テンプレートつきクラスの場合ヘッダーに実装を書くの普通なんですか?
いまのところ、exportをサポートしているコンパイラが少ないので、普通。
そうですか ヘッダーに書くことにします
みなさまありがとうございました
>>938 STLportは古いコンパイラに対応するために色々無理を
しているから、さすがに読ませるのはどうかと思うぞ。
gccのlibstdc++くらいでいいんじゃないか?
ところどころ実装が汚いor間違っている部分があるけど。
(例外まわりとか)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
山崎渉
951 :
デフォルトの名無しさん:03/06/08 17:29
castしないでひょうげんしてみて。
std::istringstream ist(static_cast<std::string>(std::string(
(std::istreambuf_iterator<char>(std::cin)),std::istreambuf_iterator<char>())));
もちろんstringを別にしないでだよ。
952 :
デフォルトの名無しさん:03/06/08 18:07
失礼しますた。
VC7コンパイルとおりました。
g++はダメだったもので。
☆ チン マチクタビレタ〜
マチクタビレタ〜
☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < 次スレまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
☆ チンチン マチクビタレタ〜
マチクビタレタ〜
☆ チンチン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < みかんっておっぱいに似てるよね〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
int fun() { vector<int> a; }
とか宣言したときにaのデストラクタを明示的に呼べますか?
ブロック抜けた時じゃなくて。
a.~vector();じゃなくて?
958 :
デフォルトの名無しさん:03/06/09 06:52
>>955 ちなみそれは宣言ではなく定義ちゅ―のでは。
extern int a; ←宣言というのはこういうのじゃない?
>957だとデストラクタ2回呼ばれると思うので素直に
int func()
{
    vector <int> t1;
    {
        vector <int> t2;
    }
   return 0;
}
とか
だから実体参照にはセミコロンをつけろと(ry
vector<int>& a = *new vector<int>;
で、
delete &a;
964 :
デフォルトの名無しさん:03/06/09 16:00
static std::vector<int>* pv;
void func(){
pv = new std::vector<int>;
pv->push_back(int(10));
}
void destroy(){
pv->~vector<int>();
}
こんなことしちゃいけないよ
newはdeleteで対応が常識。
966 :
デフォルトの名無しさん:03/06/09 16:17
(´-`).。oO(こういう業者って儲かってるんだろうか…)
968 :
デフォルトの名無しさん:03/06/09 16:38
>>966 みたよ〜♪
ぼくねーグッズ持ってるからねいらないやー。
ちなみにおしり入れるやつね。
儲かってないから手段を選んでいないに決まってるだろう。
カーソル移動の定義のやり方を教えてください(;´Д`)人スンマセン
#define カーソル移動
>>970 カーソル移動ということはカーソルが無くてはいけないな。
このスレは環境依存の話はナシだからきっと自作なのだろう。
ということで、藻前の作ったカーソルを見せてくれ。話はそれからだ。
struct Cursor
{
POINT pos; // 位置
int bShow; // 表示フラグ
}
975 :
デフォルトの名無しさん:03/06/09 18:21
次スレは?
ないなら立てるけど。
977 :
v(^・^)v:03/06/09 18:30
>>976 あー、、、やっぱりだめだった。YBBじゃ無理か。でしゃばってスマソ
978 :
デフォルトの名無しさん:03/06/09 18:40
C++ってもう進歩しないの?
言語仕様やライブラリの点で。
979 :
デフォルトの名無しさん:03/06/09 18:49
ちんぽったらそれはC++じゃねーよ
仕様を完全に満たすようにコンパイラに進歩してもらわんとな。
言語仕様いじる以前の問題っぽ。
ライブラリは進歩している。
OWLやらMFCやらQtやらwxWindowsやら、
ただし標準にならないだけ。
おかげでいつまでたってもライブラリ覚えなおすはめに。
そろそろ新しいC++の仕様を策定すべきだね。
もうそろそろCUIライブラリだけじゃなくGUIライブラリを標準に入れたらどうだ?
>>982 ぱっと見た感じ、要するに、boost, loki, C99 辺りの
ライブラリの一部が標準に追加されそうってことかな?
早くtypeofを標準化汁。
早い床shared_ptrを標準に入れてホスィ。
標準化より次スレが先だ。
989 :
デフォルトの名無しさん:03/06/09 21:32
そんまえになぜに標準化にこだわるか
漏れにはわからん。使えるんだから別にいいべ。
>>989 同意
ライブラリなんかどうでもいいからtypeofを速く
ひとえにポータビリティ
typeofハァハァ…
↓次スレは任せた
↑了解だ兄者。
標準に入ってるだけで使いやすさが団地だべ。
標準ソケットクラス作れよ。
MFCを標準規格に入れてくれないかな。
999 :
デフォルトの名無しさん:03/06/09 21:48
いまさらなによ!!!!!!!!!
1000 :
デフォルトの名無しさん:03/06/09 21:48
1
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。