“void-value不被忽略”错误意味着什么以及如何删除它?

时间:2013-04-18 09:04:48

标签: c++ compilation void

我尝试编译以下代码:

#include <cppunit/extensions/HelperMacros.h>
#include "tested.h"

class TestTested : public CppUnit::TestFixture
{
        CPPUNIT_TEST_SUITE(TestTested);
        CPPUNIT_TEST(check_value);
        CPPUNIT_TEST_SUITE_END();

        public:
                void check_value();
};

CPPUNIT_TEST_SUITE_REGISTRATION(TestTested);

void TestTested::check_value() {
        tested t(3);
        int expected_val = t.getValue(); // <----- Line 18.
        CPPUNIT_ASSERT_EQUAL(7, expected_val);
}

结果我得到了:

testing.cpp:18:32: Error: void-value is not ignored where it should be

EDDIT

为了完成示例,我发布了tested.htested.cpp的代码:

tested.h

#include <iostream>
using namespace std;

class tested {
    private:
        int x;
    public:
        tested(int int_x);
        void getValue();
};

tested.cpp

#include <iostream>
using namespace std;

tested::tested(int x_inp) {
    x = x_inp;
}

int tested::getValue() {
    return x;
}

3 个答案:

答案 0 :(得分:4)

您在测试的类中声明void getValue(); ..更改为int getValue();

答案 1 :(得分:1)

void函数不能返回值。 您从API getValue()获取int值,因此它应返回一个int。

答案 2 :(得分:1)

您的类定义与实现不匹配:

在您的标题中,您已按以下方式声明它(另外,您可能希望查看一些命名约定。)

class tested {
    private:
        int x;
    public:
        tested(int int_x);
        void getValue();
};

您已将getValue()声明为void,即无法返回。 getter什么都不返回没有多大意义,是吗?

但是,在.cpp文件中,您实现了getValue(),如下所示:

int tested::getValue() {
    return x;
}

您需要更新标头类型中的getValue()方法签名,以使其返回类型与实现(int)匹配。