私が持っているこのクラス:期待の一次式「;」トークン
#pragma once
#include <iostream>
namespace Ispit
{
template <class T>
class Value
{
template <class Y>
friend std::ostream& operator<<(std::ostream&, const Value<Y>&) noexcept;
public:
Value() noexcept;
Value(T val) noexcept; //{ podatak = val;}
Value& operator()();
bool operator<(const Value&);
virtual void print(std::ostream&) const noexcept;
virtual ~Value();
protected:
T podatak;
};
template <class T>
std::ostream& operator<<(std::ostream& out, const Value<T>& val) noexcept
{
val.print(out);
return out;
}
template <class T>
Value<T>::Value() noexcept : podatak(T()) {}
template <class T>
Value<T>::Value(T val) noexcept //: podatak(T) {}
{
podatak = T; // this where the error occurs
}
template <class T>
Value<T>& Value<T>::operator()()
{
return podatak;
}
}
をコンパイルし、このエラーを与える:
expected primary-expression before ‘;’ token
は、このエラーが発生する理由と、私はそれをどのように修正することができますか?
さまざまな場所でテンプレート単語を追加しようとしましたが、変数のルールが見つかりませんでした(これがthigの場合はわかりません)。
関数がインラインであっても動作しません...
コンパイラはgcc 5.2.1
メンバ変数 'podatak'に*タイプ*' T'を割り当てようとしています。 'podatak = val'を試してみてください。(もっと良いのは、メンバ初期化子リスト':podatak(val) 'に移動してください。 – WhozCraig
@WhozCraig私はこれをやったと信じられません-_- –
眠っていないことは、downvotingに対して有効な防御ではありません。愚かな悪戯で私たちの時間を無駄にするのではなく、もう一度あなたの問題を解決しようとする前に、いくつかの睡眠を取得します。転記する前に –