2016-11-08 3 views
0

В приведенном ниже примере кода класс Die является только базовым классом, который наследует AttackDie. Когда AttackDie создается, ему нужны данные, хранящиеся в экземпляре класса StatSys и целочисленном значении. В результате конструктор для AttackDie был спроектирован таким образом, чтобы в качестве входных данных использовался экземпляр StatSys и целое число. Однако компилятор бросает ошибку C2511 в строке, содержащей AttackDie::AttackDie(StatSys * LocalSystem, int Type) ошибка заключается в следующем:Ошибка C2511 - функция перегруженного члена не найдена

AttackDie :: AttackDie (StatSys *, Int) ': перегруженная функция не найдена в' AttackDie

I не понимаю, почему эта ошибка появляется. Я проверил заголовок и источник. Интерфейсы декларации и реализации, похоже, совпадают. Может ли кто-нибудь направить меня к проблеме?

Примеры кода

Dice.cpp

#include <string> 
#include <fstream> 
#include <sstream> 
#include <iostream> 
#include <Dice.h> 
#include <StatisticsSystem.h> 

using namespace std; 

AttackDie::AttackDie(StatSys * LocalSystem, int Type) 
{ 
    DataIntegrity = true; 

    if (Type > -1) 
    { 
     switch (Type) 
     { 
     case 0: 
      DieType = "Red"; 
      DieClass = "Damage"; 
      break; 

     case 1: 
      DieType = "Green"; 
      DieClass = "Balanced"; 
      break; 

     case 2: 
      DieType = "Blue"; 
      DieClass = "Accuracy"; 
      break; 

     case 3: 
      DieType = "Yellow"; 
      DieClass = "Surge"; 
      break; 

     default: 
      cout << "Unrecognized TypeNum value (>). Initialization of key AttackDie variables failed./n"; 
      DieType = "Error"; 
      DieClass = "Error"; 
      DataIntegrity = false; 
     } 
    } 
    else 
    { 
     cout << "Unrecognized TypeNum value (<). Initialization of key AttackDie variables failed./n"; 
     DieType = "Error"; 
     DieClass = "Error"; 
     DataIntegrity = false; 
    } 

    if (DataIntegrity) 
    { 
     const int GROUP_SIZE = 3; 
     int Iterator = 0; 

     int Test[3]; 
     bool CSVDataValid = true; 
     for (int OuterCounter = 0; OuterCounter <= LocalSystem->NUM_OF_SIDES - 1; OuterCounter++) 
     { 
      Test[0] = LocalSystem->AccessCSVData(Type, Iterator); 
      Test[1] = LocalSystem->AccessCSVData(Type, Iterator + 1); 
      Test[2] = LocalSystem->AccessCSVData(Type, Iterator + 2); 
      Iterator += GROUP_SIZE; 
      if (Test[0] <= -1 || Test[1] <= -1 || Test[2] <= -1) 
      { 
       CSVDataValid = false; 
      } 
      else 
      { 
       Sides[OuterCounter].Damage = Test[0]; 
       Sides[OuterCounter].Surges = Test[1]; 
       Sides[OuterCounter].Accuracy = Test[2]; 
      } 
     } 
     if (!CSVDataValid) 
     { 
      cout << "Side specific parameters were not set. CSV data not valid."; 
      DataIntegrity = false; 
     } 
     else 
     { 
      Total = { 0, 0, 0 }; 
      for (int SideCounter = 0; SideCounter <= 5; SideCounter++) 
      { 
       Total.Damage += Sides[SideCounter].Damage; 
       Total.Surges += Sides[SideCounter].Surges; 
       Total.Accuracy += Sides[SideCounter].Accuracy; 
      } 
      Averages.Damage = Total.Damage/LocalSystem->NUM_OF_SIDES; 
      Averages.Surges = Total.Surges/LocalSystem->NUM_OF_SIDES; 
      Averages.Accuracy = Total.Accuracy/LocalSystem->NUM_OF_SIDES; 
     } 
    } 
} 

Dice.h

#pragma once 
#include <string> 
#include <fstream> 
#include <sstream> 
#include <iostream> 
#include <cmath> 


using namespace std; 

struct AttackStatAverages 
{ 
    double Damage; 
    double Surges; 
    double Accuracy; 
}; 

struct DefenseStatAverages 
{ 
    double Blocks; 
    double Evades; 
    int Dodges; 
}; 

class Die 
{ 
public: 
    string GetDieType(); 
    string GetDieClass(); 


protected: 
    string DieType; 
    string DieClass; 
    bool DataIntegrity; 
}; 


class AttackDie : public Die 
{ 
public: 
    AttackDie(StatSys * LocalSystem, int Type); 
    int GetSides(int SideNum, int Parameter); 
    double GetAverages(int Parameter); 
    int GetTotal(int Parameter); 
    ~AttackDie(); 

private: 
    AttackStats Sides[6]; 
    AttackStatAverages Averages; 
    AttackStats Total; 
}; 

StatisticsSystem.h

#pragma once 
    #include <string> 
    #include <fstream> 
    #include <sstream> 
    #include <iostream> 
    #include <cmath> 
    #include <Dice.h> 
    #include <vector> 

    using namespace std; 

    struct DicePackage 
    { 
     int Mode; 
     int Quantity; 
     int NumberOfPossibilities; 
     bool Error; 
     AttackDie* AttackDice[4]; 
     DefenseDie* DefenseDice[3]; 
    }; 

    class StatSys 
    { 
     friend class AttackDie; 
     friend class DefenseDie; 
    public: 
     StatSys(); 
     ~StatSys(); 
     const double VERSION = 0.1; 
     int AccessCSVData(int Row, int Column); 

    private: 
     static const int MAX_NUM_OF_DICE = 4; 
     const int METHOD_ERROR_SIZE = 10; 
     const int NUM_OF_SIDES = 6; 
     const int GROUP_SIZE = 3; 
     const int DAMAGE = 0; 
     const int SURGES = 1; 
     const int ACCURACY = 2; 
     const int BLOCKS = 0; 
     const int EVADES = 1; 
     const int DODGE = 2; 
     const int ITERATIONS = 3; 
     DicePackage DiceSet; 
     bool CSVDataState; 
     bool ErrorDataState; 
     int CSVData[6][18]; 
     vector<string> Errors; 
     vector<string> ErrorDescriptions; 
     int StringToInt(string Value); 
     void LoadCSV(); 
+4

Просьба указать [MCVE], который воспроизводит вашу проблему вместе со стенографическими сообщениями об ошибках (акцент на *** минимальный ***). –

+0

Отправка запроса на MCVE. Слишком много кода И неполное. Любые удары, которые я беру при сортировке, меняют код и могут удалить вашу проблему. – user4581301

+0

Отключить тему: ошибка в Dice.h. Это не '#include '. Это заставляет недокументированную дополнительную зависимость или заказы включений на всех, включая Dice.h. – user4581301

ответ

1
#include <Dice.h> 
#include <StatisticsSystem.h> 

должен быть

#include "Dice.h" 
#include "StatisticsSystem.h" 

<> в первую очередь для системных заголовков

"" являются заголовочные файлы в том же каталоге

+2

Не очень хороший ответ, потому что он не касается проблемы OP. Было бы хорошим комментарием. – user4581301

+0

О да, я забыл об этой детали. Я сделаю изменения. Спасибо за ответ. – Jefe

+0

Я отредактировал его, чтобы также иметь StatisticsSystem.h. Прежде чем я не понял, что это был файл. – ComradeJoecool

0

выглядит как user4581301 было правильным. Добавление #include <StatisticsSystem.h> в Dice.h исправило проблему, поскольку Dice.h действительно нуждается в данных из этого заголовка.

Смежные вопросы