0

我想在 C++ (VS2010) 中创建一个私有函数。它应该返回结构体/用户定义类型的向量/数组。

但是我认为我在 cpp 文件中对函数的声明可能是错误的。或者可能已经在标题中。有人可以看看吗?

我的标题如下所示:

#pragma once
using namespace std;
#include <algorithm>
#include <vector>
class clsWString2
{
private:
struct udtWChar2
{
    wstring Text;
    int OrigPos;
};
bool m_bDirty;
vector<udtWChar2>pToWChar2(wstring u);

vector<udtWChar2>m;
public:
clsWString2(void);
~clsWString2(void);
void ReplaceCompareBinary(wstring uSearchFor, wstring uReplaceBy);
void ReplaceCompareText(wstring uSearchFor,wstring uReplaceBy);
void ReplaceByPos(int uStartPos1Based,int uLen0Based, wstring uReplaceBy);
void FeedString(wstring u);
void Append(wstring u);
wstring CharAtPos(int uIndex);
int OrigPos(int uIndex);
};

我的 .cpp 文件如下所示:

#include "StdAfx.h"
#include "clsWString2.h"


clsWString2::clsWString2(void)
{
m.resize(0);
}
clsWString2::~clsWString2(void)
{
}
vector<udtWChar2> clsWString2::pToWChar2(wstring u)
{
vector<udtWChar2> n;
n.resize(0);

for (int i=0;i<u.size();i++)
{

    wstring sChar;
    sChar=u.substr(i,1);

    udtWChar2 nc;
    nc.Text =sChar;
    nc.OrigPos=i;

    n.push_back (nc);
}

return n;
}
4

3 回答 3

5

在源文件中,定义函数时,返回类型不在类的范围内,因此vector中的类需要全限定:

vector<clsWString2::udtWChar2> clsWString2::pToWChar2(wstring u)
{
    ...
}
于 2013-04-02T09:20:48.950 回答
1

啊,我明白了:

vector<clsWString2::udtWChar2> clsWString2::pToWChar2(wstring u)
于 2013-04-02T09:20:07.097 回答
0

你不能直接使用 udtWChar2 作为类型,你需要定义类型 def 或者你需要使用 struct udtWChar2

像 :

在.h

vector  < struct udtWChar2 > pToWChar2(wstring u);
vector  < struct udtWChar2 > m;

在.cpp

vector < struct clsWString2::udtWChar2 > clsWString2::pToWChar2(wstring u)
于 2013-04-02T09:38:00.783 回答