#include "nq.h" #include "nq_ok.h" #include "nq_smart.h" class NQ_test { public: static void nq_virtual_test(void) { using namespace std; NQ::Seq sq = {3, 6, 4, 2, 8, 5, 7, 1}; char **pp = NQ::build_charpp(8, '.'); NQ::seq_2_charpp(sq, pp); // vector<int>{0,1,2,3,4,5,6,7} NQ_ok a(pp, 8, "Alice"); NQ_ok b(4, "Boss"); NQ_smart c(pp, 8, "Carlos"); NQ_smart d(10); // NQ_smart c, d; NQ *objs[4] = {&a, &b, &c, &d}; NQ *x; for (int j = 0; j < 4; j++) { x = objs[j]; cout << "\n============ x = objs[" << j << "] ================== \n"; cout << "\n ...... cout << x ........ \n"; cout << *x; cout << "\n.... x->check_solution(sq) ... \n"; x->check_solution(sq); cout << "\n.... x->find_one_sol() ... \n"; x->find_one_sol(); cout << "\n.... x->find_all_solutions() ... \n"; x->find_all_sols(); } cout << endl; } }; int main(void) { NQ_test::nq_virtual_test(); return 0; }
时间: 2024-04-27 17:25:17 浏览: 66
这段代码是一个 N 皇后问题的解法实现。其中用到了 NQ、NQ_ok、NQ_smart 三个类,分别代表了不同的解法实现。其中 NQ 是一个基类,NQ_ok 和 NQ_smart 是 NQ 的派生类。代码中通过使用多态的方式,创建了一个 NQ 类型的指针数组,用于存储 NQ、NQ_ok、NQ_smart 三个类的对象,然后通过循环遍历指针数组来操作每个对象,并输出相应的解法结果。
相关问题
{"enc":{"h":1280,"nq":75,"q":75,"w":720}}
根据提供的引用内容,{"enc":{"h":1280,"nq":75,"q":75,"w":720}}中的字段可以解释如下:
- "h": 1280表示明文 m 的编码。
- "nq": 75表示 nq 的值,即密文 c 的长度。
- "q": 75表示 q 的值,用于进行模运算。
- "w": 720表示明文 m 的位数。
以上是对{"enc":{"h":1280,"nq":75,"q":75,"w":720}}字段的解释。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [全同态加密:BGV](https://blog.csdn.net/weixin_44885334/article/details/127339960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
class{ public: void operator()(int a) mutable { p = q + a; cout << “p=” << p << “\nq=” <<q << endl; } }p_q; 這樣編譯會錯,為什麼?
这段代码中的错误在于`operator()`函数声明为`void operator()(int a) mutable`,但实际尝试调用时却没有提供参数。`p_q`是一个函数对象(也称作functor),它需要通过`()`调用并且传递参数来运行其内部的操作。
如果这是在试图定义一个函数对象并准备用于某个容器(如`std::function`、`std::bind`等)或者直接调用,应该这样写:
```cpp
class MyClass {
public:
void operator()(int a) mutable {
p = q + a;
cout << "p=" << p << "\nq=" << q << endl;
}
};
// 使用示例
MyClass p_q;
p_q(5); // 要传入一个整数参数
```
或者如果`p`和`q`是类的成员变量,你可以省略`mutable`关键字,因为成员函数默认是可以被`const`对象修改的,但如果意图是禁止`const`对象调用并修改`p`和`q`,则应保留`mutable`:
```cpp
void operator()(int a) {
p = q + a;
cout << "p=" << p << "\nq=" << q << endl;
}
```
在这个例子中,如果不提供参数,编译器会报错,提示缺少必要的实参。记得在使用的时候确保有正确的参数传递。
阅读全文