我在做什么错奇怪,因为构造函数的签名是相同的。编译器说:
'ShaderProgram :: ShaderProgram(std :: vector >)':在'ShaderProgram'中找不到重载成员函数。
当我在代码中使用3个文件(如下)时,会发生此错误,但是当我将此代码放入1个文件(主cpp)中时,会发生此错误-

//main.cpp
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include "ShaderHelpers.h"


int main(int argc, const char* argv[]) {

    int* a = new int(5);
    int* b = new int(7);
    ShaderProgram *sp = new ShaderProgram(std::vector<int*>{ a, b});
    return 0;
}
================================================================
//shader.cpp
#include "ShaderHelpers.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <string>

ShaderProgram::ShaderProgram() { }

ShaderProgram::ShaderProgram(std::vector<int*> shaders)
{
    Shaders = shaders;
    for each (int* i in shaders)
    {
        std::cout << i;
    }
}

ShaderProgram::~ShaderProgram()
{
    std::cout << "delete";
}


===============================================================
//ShaderHelper.h
#pragma once
#include <string>


class ShaderProgram
{
public:
    std::vector<int*> Shaders;
    ShaderProgram(std::vector<int*> shaders);
    ~ShaderProgram();

private:
    ShaderProgram();

};

最佳答案

我只需要添加

# include <vector>


进入ShaderHelper.h

10-08 08:56