我的代码中存在以下问题。我正在尝试创建一个变量num,使用std :: cin向用户询问,然后将其传递给我的模板。但是它说 “非类型模板参数不是常量表达式”指向模板中的变量num。 我尝试使用“ int num”,“ const int num”和“ const static int num”,但没有人可以使用。有想法吗?
我尝试过的:
int num; // no
static int num; // one
const static int num = 0; // works
std::cin >> num;
Number<num, num, int> N1(10); // here
Number<16, 3, int> N2(10);
std::cout << N1 + N2;
主要代码:
#include <stdio.h>
#include <iostream>
#include <cerrno>
#include <exception>
#include "number.hpp"
int main()
{
try
{
int num; // Here..
std::cin >> num;
Number<num, num, int> N1(10); // Here..
Number<16, 3, int> N2(10);
std::cout << N1 + N2;
N1.suma(N2).write(std::cout);
std::cout << N1 * N2;
}
catch (const std::system_error &e)
{
std::cerr << e.what() << '\n';
}
}
这是课程:
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
#include <exception>
#include <cerrno>
template <size_t B, size_t N, typename T = char> // here is the template
class Number
{
private:
T main_number = NULL;
void toBase(int valor);
public:
std::vector<T> v; // Vector que contendrá el numero desglozado
Number(int valor); // Constructor
~Number();
Number<B, N, T> operator+(const Number<B, N, T> &operando);
Number<B, N, T> operator-(const Number<B, N, T> &operando);
Number<B, N, T> operator*(const Number<B, N, T> &operando);
Number<B, N, T> suma(const Number<B, N, T> &sumando) const;
Number<B, N, T> resta(const Number<B, N, T> &sumando) const;
Number<B, N, T> producto(const Number<B, N, T> &sumando) const;
std::ostream &write(std::ostream &os) const;
friend std::ostream &operator<<(std::ostream &, Number<B, N, T> &);
};
谢谢!