VS2012 C ++未找到重载的成员函数/声明不兼容

时间:2014-03-08 18:36:29

标签: c++ visual-studio-2012

这是我第一次真正涉足c ++,所以请耐心等待。这也是一个赋值,基本上我提供了一堆废话.h和一些测试文件,但没有实现文件。我们期望创建实现文件,但是由于缺少这么多函数,它自然不会编译,因此我无法使用迭代方法开始编码。所以,我正在尝试创建虚拟实现,以便我可以一次构建每个部分一个函数。我在头文件中为此特定函数创建匹配的“虚拟”实现时遇到问题。我确信这对于核心程序员来说是c++ 101,但对于第一次学习c ++的人来说并不是那么简单。我明白了...我的实现与原型定义不匹配。如何让实现与头文件中的函数原型相匹配?请用小词,因为我是业余爱好者。 : - )

// sequence.h
class sequence
{
public:
    size_type size( ) const;

具有“虚拟”功能的实现文件。

// sequence.cpp
const sequence::size_type sequence::size()
{
    return 0;
}

编译器错误:

Error   1   error C2511: 'const main_savitch_3::sequence::size_type main_savitch_3::sequence::size(void)' : overloaded member function not found in 'main_savitch_3::sequence'  hw1\sequence1.cpp   24  1   hw1

2   IntelliSense: declaration is incompatible with "main_savitch_3::sequence::size_type main_savitch_3::sequence::size() const" (declared at line 93 of "hw1\sequence1.cpp  23  38  hw1

2 个答案:

答案 0 :(得分:3)

您的签名具有const成员函数,返回非const值(这非常有意义)。所以你的定义需要匹配:

sequence::size_type sequence::size() const
{
    return 0;
}

答案 1 :(得分:1)

函数声明末尾的const表示该函数不应该修改任何东西"在它所在的类中,而不是返回类型是常量。

你应该写

size_type sequence::size() const
{
    return 0;
}

而且,由于我没有看到任何代码,所以你应该只使用" 序列"

中的限定符
sequence::size_type

如果在sequence类中定义(或类型定义)该类型。