gpt4 book ai didi

c++ - 无法创建对象并使用其模板类的方法

转载 作者:太空宇宙 更新时间:2023-11-04 16:05:01 24 4
gpt4 key购买 nike

我对在 C++ 中使用模板非常陌生。以下是我尝试使用的代码。我无法使用以下代码,因为我不知道如何为它创建对象并使用其中定义的方法。

 template <typename UInt> class nCr {
public:
typedef UInt result_type;
typedef UInt first_argument_type;
typedef UInt second_argument_type;

result_type operator()(first_argument_type n, second_argument_type k) {
if (n_ != n) {
n_ = n;
B_.resize(n);
} // if n

return B_[k];
} // operator()

private:
int n_ = -1;
std::vector<result_type> B_;

};

我创建对象的方式是:

#include <iostream>
#include "math.hpp" // WHere the above class nCr is defined

int main() {
int n =4;
nCr x(4,2);

return 0;
}

为此,我将错误创建为

error: use of class template 'jaz::Binom' requires template arguments      
nCr x(4,2);
^
./include/math.hpp:68:34: note: template is declared here
template <typename UInt> class nCr {
~~~~~~~~~~~~~~~~~~~~~~~~ ^

有什么建议吗?

最佳答案

第一个错误,nCr是模板类,提到的时候需要指定模板参数,比如nCr<int> .

第二个错误,nCr<int> x(4,2);意味着构造一个nCr<int>通过其带有两个参数的构造函数,但是 nCr没有这样的构造函数。相反,您正在定义 operator()nCr , 所以你的意思可能是

nCr<int> x;
int result = x(4, 2);

关于c++ - 无法创建对象并使用其模板类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com