간단한 매트릭스 클래스 템플릿을 구현하려고합니다. 기본적으로 Matrix (data1, .., dataN)처럼 인스턴스화하고 싶습니다. 기본적으로 2 개의 부호없는 int를 사용하는 템플릿 클래스를 정의한다고 생각했습니다. 템플릿 매개 변수, 오른쪽이 포함 된 데이터의 유형을 추론 할 초기화 목록을 사용하는 등 지금은이 간단한 시작 썼다 :템플릿의 매트릭스 템플릿
template<size_t N, size_t M>
class Matrix {
public:
template<typename ...T>
constexpr Matrix<N,M>(T ... args) noexcept
: data{std::forward<T>(args)... }
{
static_assert(sizeof...(args) <= N*M, "Insufficent element for a Matrix ");
}
const auto getData()const { return data; }
private:
template<typename T>
std::valarray<T> data ;
};
을하지만 난이 오류가 발생했습니다 ..
error: data member ‘data’ cannot be a member template std::valarray data ;
당신을 그래서 뭐 생각해? 그녀의 초기화 (생성자에 전달 된 매개 변수)에 의해 행렬 의 유형을 추론하고이 시간을 모든 클래스 정의에 따라 을 사용하여 추론하는 방법이 있습니까?
멤버 변수가 C++ 14 이상에서 템플릿 화 될 수 있는지는 모르겠지만 왜 어떻게 'T'가 전체 클래스의 매개 변수가 아닌지 알 수 있습니까? – user463035818
'typename T '가 클래스의 첫 번째 (또는 마지막) 템플릿 인자가 될 것으로 기대합니다. – grek40
왜냐하면 나는 이들을 인스턴스화하기 위해서이라는 행렬을 사용할 것이기 때문에 클래스 템플릿 매개 변수는 여야합니다 ... 어디에서 T를 삽입 할 수 있습니까 ?? 무엇을 추론하니? –