无法将参数从“const bar”转换为“const int”

时间:2016-08-03 14:56:11

标签: c++

我已经发布了这个问题但不是最小,完整和可验证的。所以这又是: 给出以下5个非常小的文件:

的main.cpp

#include "bar.h"
#include <iostream>

int main()
{
    const bar testBar;

    testBar.barTest();

    std::cin.get();
}

bar.h

#pragma once

#include "foobar.h"

class bar
{
public:
    bar();
    ~bar();

    void barTest() const;

private:
    foobar* m_pFoobar;
};

bar.cpp

#include "bar.h"

bar::bar()
{
    m_pFoobar = new foobar;
}

bar::~bar()
{
}

void bar::barTest() const
{
    m_pFoobar->fooTest(*this);
}

foo.h中

#pragma once

#include "bar.h"

class foo
{
public:
    virtual void fooTest(const bar& b);
};

foobar.h中

#pragma once

#include "bar.h"
#include "foo.h"

class foobar : public foo
{
public:
    foobar();
    ~foobar();

    void fooTest(const bar& b);
};

foobar.cpp

#include "foobar.h"

#include <iostream>

foobar::foobar()
{
}

foobar::~foobar()
{
}

void foobar::fooTest(const bar& b)
{
    std::cout << "SUCCESS" << std::endl;
}

当我运行此代码时,VS2015告诉我以下内容:

Error   C2664   'void foobar::fooTest(const int)': cannot convert argument 1 from 'const bar' to 'const int'    bar.cpp 14

我不明白编译器用int作为参数来解释我的函数的原因。我希望有人可以帮助我。

0 个答案:

没有答案