小编Syn*_*vil的帖子

如何使用相同的基类获取2个不同类的向量?

我知道在C#中有一种方法可以使变量接受值,只要它们共享一个基类,但我很难用C++.我正在尝试做什么?

这就是我的代码:

class BaseClass
{
    public:
        virtual void Setup() = 0;       
        virtual void DisplayText() = 0;
};

class A: public BaseClass
{
    public:     
        void Setup();       
        void DisplayText();
};

class B: public BaseClass
{
    public:     
        void Setup();       
        void DisplayText();
};


//main.cpp

A a;
B b;

std::vector<BaseClass> vector = std::vector();

void main()
{
    vector.push_back(a);
    vector.push_back(b);

    for_each (vector.begin(), vector.end(), vector.Setup());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在拥有的虽然它在我尝试运行时给了我这个错误:

IntelliSense: no instance of overloaded function
"std::vector<_Ty,_Alloc>::push_back [with _Ty=BaseClass,,Alloc=std::allocator<BaseClass>]"
matches the argument list
argument types are: (A*)
object type …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance vector

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

如何调用具有 for_each 循环参数的函数?

我有一个 C++ 程序,它将对象存储在一个向量中,然后用于std::for_each在每个对象上调用一个函数。std::for_each如果被调用的函数需要带参数,我不明白如何编写循环。

这是我想要工作的代码示例:

#include <vector>
#include <algorithm>
#include <functional>

class BaseClass
{
    public:
        virtual void Setup() = 0;
        virtual void DisplayText(int key, int x, int y) = 0;
};

class A: public BaseClass
{
    public:
        void Setup();
        void DisplayText(int key, int x, int y);
};

class B: public BaseClass
{
    public:
        void Setup();
        void DisplayText(int key, int x, int y);
};

void demo(A *a, B *b, std::vector<BaseClass*>& storageVector)
{
    storageVector.push_back(a);
    storageVector.push_back(b);

    std::for_each (storageVector.begin(), storageVector.end(),
        std::mem_fn(&BaseClass::Setup)); …
Run Code Online (Sandbox Code Playgroud)

c++ foreach

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

标签 统计

c++ ×2

foreach ×1

inheritance ×1

vector ×1