gmock调用到隐式删除的副本构造函数

沃夫加普罗

我正在玩gmock,我有一个人为设计的例子来学习它的细微差别。我在调用隐式副本构造函数时遇到了问题:

// mock_word.h
class MockWord : Word {
public:
    MockWord(const std::string word) : Word(word) {};
    MOCK_METHOD0(pigLatinify, std::string(void));
};

// strings.h
template <typename Word>
class Strings {
...
private:
    std::vector<Word>* words = new std::vector<Word>();
public:
    // This should call the implicit copy constructor
    void addWord(const Word word) {
        this->words->push_back(word); 
    };
...
};

// strings_test.cpp
class StringsTest : public ::testing::Test {
protected:
    Strings<MockWord>* strings;
public:
    virtual void SetUp() {
        strings = new Strings<MockWord>();
    };
    virtual void TearDown() {
        delete strings;
    };
};

TEST_F(StringsTest, StringIsAllPigLatinifiedNicely) {
    MockWord mockWordA("beast");
    MockWord mockWordB("dough");

    // Set some expectations for the Mock
    EXPECT_CALL(mockWordA, pigLatinify()).Times(AtLeast(1)); 
    EXPECT_CALL(mockWordB, pigLatinify()).Times(AtLeast(1)); 

    strings->addWord(mockWordA);
    strings->addWord(mockWordB);
    ...
};

现在,如果我将自动变量转换为指针mockWordAmockWordB从指针转换,我可能会感到满意并且可以工作,但这不是我想要提供的接口。

我得到的确切错误是:

error: call to implicitly-deleted copy constructor of 'MockWord'
    strings->addWord(mockWordA);
                     ^~~~~~~~~
mock_word.h:11:9: note: copy constructor of 'MockWord' is implicitly     deleted because field 'gmock0_pigLatinify_11' has a deleted copy     constructor
    MOCK_METHOD0(pigLatinify, std::string(void));
沃夫加普罗

我通过更改函数接口解决了这个问题,Strings::addWord(Word* word)因为我不想在这样的基本示例中使用指针,但对我来说,函数接口似乎是限制性的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用LLVM中隐式删除的副本构造函数

来自分类Dev

错误:调用“ Cadena”的隐式删除副本构造函数

来自分类Dev

隐式与显式删除副本构造函数

来自分类Dev

尝试将参数传递给方法时出现“调用隐式删除的副本构造函数”错误

来自分类Dev

拦截C ++隐式副本构造函数,或调用其功能

来自分类Dev

这是隐式调用副本构造函数吗?

来自分类Dev

从定义的副本构造函数调用默认(隐式)副本构造函数

来自分类Dev

构造函数隐式删除

来自分类Dev

为什么(已删除)副本构造函数比隐式转换更可取?

来自分类Dev

隐式删除的副本构造函数编译错误,返回的指针值

来自分类Dev

移动构造函数(错误:调用隐式删除的拷贝构造函数)

来自分类Dev

C ++隐式转换构造函数调用

来自分类Dev

构造函数异常和隐式删除

来自分类Dev

多态类中没有隐式副本构造函数?

来自分类Dev

错误:隐式声明的副本构造函数的定义

来自分类Dev

隐式声明的副本构造函数与隐式定义的副本构造函数之间有什么区别?

来自分类Dev

C ++ 11隐式副本构造函数,同时显式实现构造函数

来自分类Dev

为什么类中的ostringstream类型的成员导致“调用隐式删除的复制构造函数”错误?

来自分类Dev

C ++隐式和显式继承构造函数调用

来自分类Dev

隐式与显式默认构造函数调用

来自分类Dev

如何隐式调用父类的构造函数

来自分类Dev

为什么C ++隐式调用父默认构造函数?

来自分类Dev

隐式调用超类中的无参数构造函数

来自分类Dev

隐式构造函数调用还是什么?

来自分类Dev

隐式调用函数

来自分类Dev

隐式构造函数与“空”构造函数

来自分类Dev

什么会导致隐式/默认副本构造函数在POD结构上失败?

来自分类Dev

结构初始化中隐式副本构造函数出错

来自分类Dev

关于隐式声明的副本构造函数的引用在逻辑上不清楚

Related 相关文章

  1. 1

    调用LLVM中隐式删除的副本构造函数

  2. 2

    错误:调用“ Cadena”的隐式删除副本构造函数

  3. 3

    隐式与显式删除副本构造函数

  4. 4

    尝试将参数传递给方法时出现“调用隐式删除的副本构造函数”错误

  5. 5

    拦截C ++隐式副本构造函数,或调用其功能

  6. 6

    这是隐式调用副本构造函数吗?

  7. 7

    从定义的副本构造函数调用默认(隐式)副本构造函数

  8. 8

    构造函数隐式删除

  9. 9

    为什么(已删除)副本构造函数比隐式转换更可取?

  10. 10

    隐式删除的副本构造函数编译错误,返回的指针值

  11. 11

    移动构造函数(错误:调用隐式删除的拷贝构造函数)

  12. 12

    C ++隐式转换构造函数调用

  13. 13

    构造函数异常和隐式删除

  14. 14

    多态类中没有隐式副本构造函数?

  15. 15

    错误:隐式声明的副本构造函数的定义

  16. 16

    隐式声明的副本构造函数与隐式定义的副本构造函数之间有什么区别?

  17. 17

    C ++ 11隐式副本构造函数,同时显式实现构造函数

  18. 18

    为什么类中的ostringstream类型的成员导致“调用隐式删除的复制构造函数”错误?

  19. 19

    C ++隐式和显式继承构造函数调用

  20. 20

    隐式与显式默认构造函数调用

  21. 21

    如何隐式调用父类的构造函数

  22. 22

    为什么C ++隐式调用父默认构造函数?

  23. 23

    隐式调用超类中的无参数构造函数

  24. 24

    隐式构造函数调用还是什么?

  25. 25

    隐式调用函数

  26. 26

    隐式构造函数与“空”构造函数

  27. 27

    什么会导致隐式/默认副本构造函数在POD结构上失败?

  28. 28

    结构初始化中隐式副本构造函数出错

  29. 29

    关于隐式声明的副本构造函数的引用在逻辑上不清楚

热门标签

归档