codeblocks ver 10.05に問題があります。私はC++プロジェクトを作って、私はこのようなプログラムを書いた:リンクはコードブロックでは機能しません! (未定義の参照先...)
main.cppに
#include <iostream>
#include "vectorddd.hpp"
using namespace std;
int main()
{
vector3D<int> tesztinttomb;
tesztinttomb.saveout("igen.dat");
return 0;
}
ヘッダファイル(vectorddd.hpp):
#ifndef VECTORDDD_HPP_INCLUDED
#define VECTORDDD_HPP_INCLUDED
#include <iostream>
template <class T>
class vector3D {
T *x;
T *y;
T *z;
int meret;
public:
void saveout(char* FileName);
vector3D(int Meret=0) : x(new T[meret]), y(new T[Meret]), z(new T[Meret]), meret(Meret) {}
~vector3D() { delete [] x; delete [] y; delete [] z; }
};
#endif // VECTORDDD_HPP_INCLUDED
実装ファイル(vectorddd.cppを) :
#include "vectorddd.hpp"
template <class T>
void vector3D<T>::saveout(char* FileName) {
int i=0;// I know this is stupid... but the emphasis is on the linking problem
}
それだけではリンクしません。私は.cppファイルのリンクをチェックし、プロパティ - >ビルドオプションで設定をコンパイルする必要があることを知っています。そして、私は何の問題を見つけることができませんが、ただいつも同じことを記述している:
In function `main':
undefined reference to `vector3D<int>::saveout(char*)'
||=== Build finished: 1 errors, 0 warnings ===|
そして、私は私の.HPPファイルへの.cppファイルの実装を置けば、それは正常に動作します。しかし、これはコードブロックがどのように動作するかではありません。
[テンプレートの定義はヘッダに行かなければならない](のhttp:// WWW .parashift.com/C++ - faq/templates.html#faq-35.13)、これはCBとは関係ありません。 – ildjarn
http://stackoverflow.com/q/115703/1214731ここをクリックして詳細を読む – tmpearce