Как я могу вызвать функцию и оставить свой конструктор закрытым? Если я создаю класс static, мне нужно объявить имя объекта, которое компилятор использует для вызова конструктора, чего не может, если конструктор является закрытым (также объект будет посторонним). Вот код, который я пытаюсь использовать (это не компилируется):C++ частный класс
Я хочу, чтобы конструктор приватным, потому что позже будет делать много проверок, прежде чем добавить объект, изменяя предыдущие объекты, когда все представляется переменные не уникальны, а не создают новые объекты.
#include <iostream>
#include <fstream>
#include <regex>
#include <string>
#include <list>
#include <map>
using namespace std;
using namespace tr1;
class Referral
{
public:
string url;
map<string, int> keywords;
static bool submit(string url, string keyword, int occurrences)
{
//if(Referrals.all.size == 0){
// Referral(url, keyword, occurrences);
//}
}
private:
list<string> urls;
Referral(string url, string keyword, int occurrences)
{
url = url;
keywords[keyword] = occurrences;
Referrals.all.push_back(this);
}
};
struct All
{
list<Referral> all;
}Referrals;
int main()
{
Referral.submit("url", "keyword", 1);
}
Выясните, к какой цели вы относитесь? Похоже, вы пытаетесь сохранить список всех экземпляров Referral. Почему вы хотите, чтобы ваш конструктор был закрыт? –