Предупреждение компилятора Visual Studio C4250 ('class1': наследовался 'class2:: участник' через преобладание)

наконец-то получил ожидаемый результат с помощью Graphql. Вот полный код

def run_query(query): # A simple function to use requests.post to make the API call. Note the json= section.
    try:
        request = requests.post('https://api.github.***.com/graphql', json={'query': query}, headers=headers)
        return request.json()
    except e:
        returnVal = '404'


            query = """
                        {
                          repository(owner: \""""+ownerVal+"""\", name: \""""+repoVal+"""\") {
                            object(expression: \""""+branchVal+"""\") {
                              ... on Commit {
                                blame(path: \""""+folderVal+"/"+data['name']+"""\") {
                                  ranges {
                                    commit {              
                                      committedDate            
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                        """

headers = {"Authorization": "Bearer "+access_token}                        
result = run_query(query)

commit_date = result["data"]["repository"]["object"]["blame"]["ranges"][0]["commit"]["committedDate"]
11
задан Mark Ingram 22 January 2009 в 15:13
поделиться

3 ответа

У меня было то же предупреждение для следующего кода:

class Interface
{
public:
    virtual void A() = 0;
};

class Implementation : public virtual Interface
{
public:
    virtual void A() {};
};

class ExtendedInterface : public virtual Interface
{
    virtual void B() = 0;
};

class ExtendedImplementation : public ExtendedInterface , public Implementation
{
public:
    virtual void B() {};
}; 

Этот отчет об ошибках для Visual C++, 2005 в MSDN предполагает, что это - известная ошибка, которую считали не достаточно важной для фиксации... Они предлагают отключить предупреждение в этом случае при помощи прагмы. Я думаю, что это безопасно также в Вашем случае, но необходимо использовать виртуальное наследование как показано в ответе Gal Goldman.

20
ответ дан 3 December 2019 в 03:05
поделиться

Я думаю решение, которое Вы используете, может быть способ пойти, к сожалению. Единственная вещь, о которой я могу думать, который мог бы помочь, состоит в том, если Вы можете сделать A func1 чистым виртуальный. Это не могло бы быть выполнимо в Вашей реальной программе, все же.

0
ответ дан 3 December 2019 в 03:05
поделиться

Вы пытались наследовать общественность, виртуальную от класса A? Я думаю, что это должно решить его.


    class B :public virtual A;
    class C :public virtual A;
    class D : public virtual B, public virtual C;

Виртуальное наследование предполагает для решения неоднозначности.

8
ответ дан 3 December 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: