【发布时间】:2020-09-24 08:22:16
【问题描述】:
我有一个使用模板的类,当我只使用一个 .cpp 文件编写它时,它工作正常,但是当我尝试将该类放入它自己的 .cpp 和 .hpp 文件时,我收到一条错误消息:preLaunchTask "C /C++: g++ build active file" 以退出代码 1 终止,但是当我点击“显示错误”时,它告诉我到目前为止在工作区中没有检测到任何问题。
当我尝试分离一个函数时它也有效,这意味着链接器设置正确
HelloWorld.hpp
#pragma once
#include <iostream>
void HelloWorld();
HelloWorld.cpp
#include "HelloWorld.hpp"
void HelloWorld()
{
std::cout<< "Hello World"<< std::endl;
}
main.cpp
#include "HelloWorld.hpp"
int main()
{
HelloWorld();
}
上面的 sn-p 只是一个伪代码,所以可能会有错误,但是当我正确运行它时它可以工作,但是当我尝试做一些更复杂的事情时,比如类定义它就不起作用了。
这是我的相关代码
myArray.hpp
# pragma once
# include<iostream>
#ifndef N_PLAN
#define N_PLAN 2 // Planned length of the arrays
#endif
template<typename T, size_t S>
class myArray
{
public:
int arraySize();
T& operator[](size_t index);
T* arrayData();
const T* arrayData() const;
private:
T m_Data[S];
myArray.cpp
#include"myArray.hpp"
template<typename T, size_t S>
class myArray
{
public:
constexpr int arraySize() const {return S; }
T& operator[](size_t index) {return m_Data[index]; }
T* arrayData() { return m_Data; }
const T* arrayData() const { return m_Data; }
private:
T m_Data[S];
};
main.cpp
#include "myArray.hpp"
int main()
{
myArray<int, N_PLAN> data;
data[0] = 0;
data[1] = 196996;
for(size_t i = 0; i <data.arraySize(); i++)
{
std::cout<< data[i] <<std::endl;
}
}
【问题讨论】:
-
这绝对是一个重复的问题......但显然,如果有赏金问题,SO 不允许关闭问题。