小编aja*_*ari的帖子

将指向类成员函数的指针作为参数传递

我写了一个小程序,我试图将指向类的成员函数的指针传递给另一个函数.你能帮助我和我出错的地方吗?

#include<iostream>
using namespace std;
class test{
public:
        typedef void (*callback_func_ptr)();
        callback_func_ptr cb_func;

        void get_pc();

        void set_cb_ptr(void * ptr);

        void call_cb_func();
};
void test::get_pc(){
         cout << "PC" << endl;
}
void test::set_cb_ptr( void *ptr){
        cb_func = (test::callback_func_ptr)ptr;
}
void test::call_cb_func(){
           cb_func();
}
int main(){
        test t1;
            t1.set_cb_ptr((void *)(&t1.get_pc));
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译时遇到以下错误.

error C2276: '&' : illegal operation on bound member function expression
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

15
推荐指数
2
解决办法
3万
查看次数

如何清除目录及其所有内容的标签?

我已经以递归方式将标签应用于目录.如何删除所有这些标签?

clearcase configuration-management

5
推荐指数
1
解决办法
1万
查看次数

将int数组的内容写入向量

我想将数组的内容写入向量.

int A[]={10,20,30,40,50,60,70,80,90};
vector<int> my_vector;
Run Code Online (Sandbox Code Playgroud)

之前我曾经使用memcpy 将数组A的内容复制到另一个数组B. 我想使用my_vector而不是数组B.

如何在没有for循环的情况下一次性将数组A的内容写入my_vector?

c++ stl vector

4
推荐指数
1
解决办法
847
查看次数

返回结构而不暴露它

我的程序中有一个结构

struct secret_structure{
             string a;
             string  b;
             void *c;
};
Run Code Online (Sandbox Code Playgroud)

我有这样的结构清单

std::map<string name, secret_structure> my_map
Run Code Online (Sandbox Code Playgroud)

我必须编写一个函数,通过将其与名称映射来返回结构.

get_from_map(string name, secret_structure * struct) //Kind of function
Run Code Online (Sandbox Code Playgroud)

我有以下选择:

  1. 在get_from_map函数中传递secret_structure的指针.get_from_map填充结构.我不想这样做,因为结构将被暴露.

  2. 我可以使用不同的函数从结构中返回不同的值.这里的结构不会暴露,但看起来不干净.

你能帮我解决任何其他选择,使结构本身不暴露.

c++

4
推荐指数
2
解决办法
224
查看次数

删除std映射中的重复值

我有一个

map<char,my_class*> mymap;
Run Code Online (Sandbox Code Playgroud)

其内容如下.

mymap[0]=('a', 0x1);
mymap[1]=('b',0x2);
mymap[3]=('c',0x3);
mymap[4]=('d',0x1);
Run Code Online (Sandbox Code Playgroud)

如您所见,我们对键'a'和'd'具有相同的值.我有一个for循环来删除地图中的指针.

for ( it=mymap.begin() ; it != mymap.end(); it++ ){
  delete it->second;
}
Run Code Online (Sandbox Code Playgroud)

它崩溃是因为它试图删除0x1两次.我试过这样做

for ( it=mymap.begin() ; it != mymap.end(); it++ ){
  if(!it->second){
      delete it->second;
      it->second = NULL;
  }
}
Run Code Online (Sandbox Code Playgroud)

即使这样也会尝试将指针设置为NULL两次,这会导致异常.在地图中删除上述重复值的最佳方法是什么?

c++ stl map

3
推荐指数
1
解决办法
3037
查看次数

替代直接继承

我有两个班级A班和B班.我想B类拥有的功能A级加上它自己的一些更多的功能.执行此操作的一种非常简单的方法是从A类继承B .但出于某些具体实施原因,我不能这样做.

我想到了另一个解决方案,我将在其中创建另一个包含所有虚函数的类C.类A和B将继承C类.的类A将包含虚拟功能和实现B类也可以定义一组相同的功能,因此B类将具有功能A类.这是最佳解决方案吗?除了从A 直接继承B 之外,还有比这更好的解决方案吗?

c++ inheritance virtual-inheritance

2
推荐指数
1
解决办法
1912
查看次数

在与实例化对象的文件不同的文件中调用函数

我有三个文件.

file 1 这有类定义,类中的所有方法也在这里定义

file 2 上面的类的对象在这里实例化

file 3 这里我想使用文件2中创建的对象调用其中一个方法

我试图做上面的事情是因为我希望代码是模块化的.有一个更好的方法吗?你可以发布你可能有的任何其他解决方案吗?

c++

0
推荐指数
1
解决办法
58
查看次数

我可以打印 #defines 给定的 C 语言值吗?

我有

#define ADD 5
#define SUB 6
Run Code Online (Sandbox Code Playgroud)

给定值 5 和 6,我可以打印 ADD 和 SUB 吗?

c

0
推荐指数
1
解决办法
9652
查看次数