簡體   English   中英

具有結構向量作為返回值的C ++函數

[英]C++ function with a struct vector as a return value

我想在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;
}

在源文件中,當您定義函數時,返回類型不在類的范圍內,因此向量中的類需要完全限定:

vector<clsWString2::udtWChar2> clsWString2::pToWChar2(wstring u)
{
    ...
}

啊,我明白了:

vector<clsWString2::udtWChar2> clsWString2::pToWChar2(wstring u)

您不能直接將udtWChar2用作類型,需要定義類型def或將其用作結構udtWChar2

喜歡 :

在.h中

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

在.cpp中

vector < struct clsWString2::udtWChar2 > clsWString2::pToWChar2(wstring u)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM