Простой случай преобразования класса в указатель этого класса - PullRequest
1 голос
/ 06 апреля 2020

Я получаю ошибку компилятора с этим разделом кода. Говорят, что нет подходящего преобразования из NP C в NP C*.

Player::Player(Game* g) {
    target = g->getNPCListItem(0);
}

Это то, что называется в основном:

int main()
{
    Game* gameRef = new Game();
}

Это Конструктор Game:

Game::Game() {
    player = new Player(this);
}

И, наконец, вот код для целевого указателя:

class Player {
    NPC* target;
}

У меня такое ощущение, что проблема заключается в другой части моего кода.

Вот свойство:

class Game {
    NPC* nPCList[2];
}

Вот инициализация:

bool Game::initNPCList() {
    nPCList[0] = new NPC("Gregory");
    nPCList[1] = new NPC("Tasha");
    return false;
}

И, наконец, здесь вызывается функция, которая может создавать компилятор ошибка.

NPC& Game::getNPCListItem(int i) {
    return *nPCList[i];
}

Дайте мне знать, если мне нужно добавить дополнительную информацию.

Вывод:

1>------ Build started: Project: CloutGame, Configuration: Debug Win32 ------
1>misc.cpp
1>C:\Zach In A Bear Studios\CloutGame\CloutGame\CloutGame\misc.cpp(66,31): error C2440: '=': cannot convert from 'NPC' to 'NPC *'
1>C:\Zach In A Bear Studios\CloutGame\CloutGame\CloutGame\misc.cpp(66,28): message : No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>Done building project "CloutGame.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Список ошибок:

Severity    Code    Description Project File    Line    Suppression State
Error (active)  E0413   no suitable conversion function from "NPC" to "NPC *" exists    CloutGame   C:\Zach In A Bear Studios\CloutGame\CloutGame\CloutGame\misc.cpp    66  
Error   C2440   '=': cannot convert from 'NPC' to 'NPC *'   CloutGame   C:\Zach In A Bear Studios\CloutGame\CloutGame\CloutGame\misc.cpp    66

1 Ответ

4 голосов
/ 06 апреля 2020

Изменить

NPC& Game::getNPCListItem(int i) {
    return *nPCList[i];
}

на

NPC* Game::getNPCListItem(int i) {
    return nPCList[i];
}
...