Компилятор выдает ошибку при попытке определить класс с наследованием - PullRequest
1 голос
/ 25 октября 2019

Я слегка сбит с толку ошибкой, которую я получаю от компилятора. Я пытаюсь написать тесты с GoogleTest Framework. Однако в одном из моих .h файлов, где я определяю классы, я получаю сообщение об ошибке.

У меня есть следующий код, в котором возникает ошибка, и я не могу объяснить, почему это происходит, поэтому я надеюсь, что кто-то здесь может.

//Foo.h

#ifndef FOO_H
#define FOO_H

#include "gtest/gtest.h"

class FooTest1: public ::testing::Test
{
// compiler does not complain here
//...
}

//...

class FooTest2: public ::testing::TestWithParam
{
// compiler tells me this is wrong
//...
}

Это ошибка, которую я получаю:

ошибка: ожидаемое имя класса до '{' токена

Есть ли что-то, чего мне не хватает в TestWithParam, который не позволит мне определить класс следующим образом?

1 Ответ

2 голосов
/ 25 октября 2019

TestWithParam - это шаблон класса, ожидающий тип параметра теста в качестве аргумента шаблона, см. документацию .

например:

class FooTest2: public ::testing::TestWithParam<int> {
    //...
};

Компиляторжалуется, потому что шаблон класса не является типом (класса), только его специализации (например, ::testing::TestWithParam<int>) являются типами (класса). Класс не может быть производным от шаблона класса, только от типа класса.

...