मैं एक साधारण मैट्रिक्स कक्षा बना रहा हूं। मुझे यकीन है कि यह अभिन्न प्रकारसी ++: वर्ग के सदस्यों में अज्ञात टेम्पलेट पैरामीटर का उपयोग कैसे करें?
#include <string>
#include <vector>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_scalar.hpp>
template <typename T, typename = typename boost::enable_if<boost::is_scalar<T> >::type>
class Matrix
{
public:
Matrix(const size_t nrow, const size_t ncol);
private:
const size_t nrow_;
const size_t ncol_;
std::vector<std::string> rownames_;
std::vector<std::string> colnames_;
std::vector<T> data_;
};
साथ प्रयोग किया जाता है बनाने के लिए एक अनाम टेम्पलेट पैरामीटर जोड़ने के लिए कोशिश कर रहा हूँ मैं कक्षा परिभाषा के बाहर निर्माता को परिभाषित करने के
template <typename T,typename>
inline Matrix<T>::Matrix(size_t nrow, size_t ncol)
: nrow_(nrow),
ncol_(ncol),
rownames_(nrow_),
colnames_(ncol_),
data_(nrow_*ncol)
{};
जी ++ निम्नलिखित त्रुटि देता है चाहते हैं
Matrix.hh:25:50: error: invalid use of incomplete type ‘class Matrix<T>’
inline Matrix<T>::Matrix(size_t nrow, size_t ncol)
क्या आप जानते हैं कि इस समस्या को कैसे हल किया जाए?
अग्रिम धन्यवाद।
"बाहर परिभाषित करें" से, आपका क्या मतलब है? एक सीपीपी फ़ाइल में? – Garf365
नहीं, शीर्षलेख में, कक्षा परिभाषा को समाप्त करने के बाद ही। –