Передача уникального указателя child в качестве ссылки - PullRequest
1 голос
/ 19 марта 2019

VulkanSurface.h:

#include "VulkanInstance.h"

class VulkanSurface {
public:
    //Only constructor
    VulkanSurface(VulkanInstance &instance); //line 14
};

VulkanSurface.cpp:

VulkanSurface::VulkanSurface(VulkanInstance &instance) {
    //...
}

VulkanInstance.cpp:

VulkanInstance::VulkanInstance(const std::vector<const char*> validationLayers) :
validationLayers(validationLayers) {
...
}

main.cpp:

instance = std::make_unique<VulkanInstance>(validationLayers);
surface = std::make_unique<VulkanSurface>(*instance); //line 104

Это не показывает ошибок в VisualStudio в виде красной волнистой линии, но компиляция завершается неудачно со следующим:

1>main.cpp
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\vulkansurface.h(14): error C2061: syntax error: identifier 'VulkanInstance'
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'VulkanSurface'
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): note: No constructor could take the source type, or constructor overload resolution was ambiguous
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\main.cpp(104): error C2672: 'std::make_unique': no matching overloaded function found
1>VulkanInstance.cpp
1>c:\users\karlovsky120\source\repos\vulkanproject\vulkanproject\vulkansurface.h(14): error C2061: syntax error: identifier 'VulkanInstance'
...