#include "stdafx.h"
#include <iostream>
using namespace std;
template <class T>
class DynArray {
T* pData;
int size;
public:
DynArray() {
pData = NULL;
size = 0;
}
DynArray(const DynAarray& theOther) { //ここにエラーメッセージが表示されてしまう。
size = 0;
pData = NULL;
*this = theOther;
}
~DynArray() {}
void InsertAt(const T& newElement, int position);
void RemoveAt(int position);
const DynArray<T>& operator=(const DynArray<T>& theOther);
};
template<class T>
const DynArray<T>& DynArray<T>::operator=(const DynArray<T>& theOther) {
if (this != &theOther)
delete[] pData;
size = theOther.size;
if (size == 0) { pData = NULL, return *this; }
pData = new T[size];
for (int i = 0; i < size; i++)
pData[i] = theOther.pData[i];
return *this;
}
テンプレートのコピーコンストラクターについて
テンプレートのコピーコンストラクターについて
以下のコードを書いたところ、コピーコンストラクターにエラーメッセージが表示されてしまいます。エラーメッセージを見ても、どこが間違っているのか全く見当がつかないので、ご指摘お願いします。
Re: テンプレートのコピーコンストラクターについて
コピーコンストラクタであるならば、引数の方はconst DynAarray&ではなくconst DynArray&にするべきでしょう。
また、32行目でreturnは演算子ではないのにコンマ演算子でつなごうとしてエラーになっています。素直にセミコロンを使うべきでしょう。
また、32行目でreturnは演算子ではないのにコンマ演算子でつなごうとしてエラーになっています。素直にセミコロンを使うべきでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: テンプレートのコピーコンストラクターについて
Aarrayになっていたんですね......。投稿前に何度も見直したのですが、なぜか自分では全く気が付くことができませんでした。
32行目もセミコロンを使うべきですね。とても初歩的なミスでした。みけCATさん、わざわざありがとうございました。
32行目もセミコロンを使うべきですね。とても初歩的なミスでした。みけCATさん、わざわざありがとうございました。
Re: テンプレートのコピーコンストラクターについて
すみません。解決のボタンを押してしまったのですが、修正後に何故か再度エラーが起きてしまった(修正後に関数の内容を変更したりは一切していません)ので、ここにもう一度書きます。main関数内で、オブジェクトを生成して、代入などの操作はしました。
指摘された2か所のエラーを直したところ、最初にコードを動かした時に異常な動き(勝手にコマンドプロンプトが閉じる)をしたのですが、再度コードを読み込んでみたら、一応動いたので(なぜかパソコンが急に重くなりましたが)気にしていなかったのですが、今になって、何故か29行目と33行目にエラーメッセージが表示されるようになり、急にコンパイラエラーになってしまいました。エラーメッセージは、'0x3000': this character is not allowed as a first character of an identifierと表示されていますが、全く意味が分かりません。どういうことでしょうか?29行目と33行目を削除すると、コードは正常に動きます。オブジェクトの代入をすると、もちろんエラーになってしまいますが・・・。
指摘された2か所のエラーを直したところ、最初にコードを動かした時に異常な動き(勝手にコマンドプロンプトが閉じる)をしたのですが、再度コードを読み込んでみたら、一応動いたので(なぜかパソコンが急に重くなりましたが)気にしていなかったのですが、今になって、何故か29行目と33行目にエラーメッセージが表示されるようになり、急にコンパイラエラーになってしまいました。エラーメッセージは、'0x3000': this character is not allowed as a first character of an identifierと表示されていますが、全く意味が分かりません。どういうことでしょうか?29行目と33行目を削除すると、コードは正常に動きます。オブジェクトの代入をすると、もちろんエラーになってしまいますが・・・。
Re: テンプレートのコピーコンストラクターについて
Unicode Character 'IDEOGRAPHIC SPACE' (U+3000)
Javaで文字コードを調べる... 全角スペース(ideographics space)を半角スペースに置き換える方法 - my-notebook
コードに全角スペースが混ざっている可能性がありますね。
エディタの検索機能を使うか、サクラエディタなどの記号を強調表示できるエディタで変な文字が入っていないかを確かめましょう。
文字によってはテキストエディタでは確認できないかしにくく、バイナリエディタを使ったほうが発見しやすいかもしれません。
Javaで文字コードを調べる... 全角スペース(ideographics space)を半角スペースに置き換える方法 - my-notebook
コードに全角スペースが混ざっている可能性がありますね。
エディタの検索機能を使うか、サクラエディタなどの記号を強調表示できるエディタで変な文字が入っていないかを確かめましょう。
文字によってはテキストエディタでは確認できないかしにくく、バイナリエディタを使ったほうが発見しやすいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: テンプレートのコピーコンストラクターについて
全角スペースは一切コードに入っていてはいけないんですね・・・。
追加したコメント欄を調べていたところ、コードの後に全角スペース(コードと、コメントの間に全角スペース)を入れて、コメントを書いていたのが原因でした。
みけCATさん、毎回ありがとうございます。助かりました。
追加したコメント欄を調べていたところ、コードの後に全角スペース(コードと、コメントの間に全角スペース)を入れて、コメントを書いていたのが原因でした。
みけCATさん、毎回ありがとうございます。助かりました。